? includes/common.test
Index: includes/common.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/common.inc,v
retrieving revision 1.770
diff -u -p -r1.770 common.inc
--- includes/common.inc	30 May 2008 17:41:51 -0000	1.770
+++ includes/common.inc	7 Jun 2008 18:17:01 -0000
@@ -836,12 +836,16 @@ function valid_email_address($mail) {
  *   TRUE if the URL is in a valid format.
  */
 function valid_url($url, $absolute = FALSE) {
-  $allowed_characters = '[a-z0-9\/:_\-_\.\?\$,;~=#&%\+]';
+  $scheme = '[a-z0-9]+:\/\/';
+  $domain = '(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])';
+  $domain .= '(?:\.' . $domain . ')+';
+  $allowed_characters = '[a-z0-9\/:_\-_\.\?\$,;~=#&%\+\[\]]';
+
   if ($absolute) {
-    return preg_match("/^(http|https|ftp):\/\/" . $allowed_characters . "+$/i", $url);
+    return (bool)preg_match('/^' . $scheme . $domain . $allowed_characters . '+$/i', $url);
   }
   else {
-    return preg_match("/^" . $allowed_characters . "+$/i", $url);
+    return (bool)preg_match('/^(' . $scheme . '){0}' . $domain . $allowed_characters . '+$/i', $url);
   }
 }
 
