В принципе работает, но происходит проверка только на наличие точки и правильность ситаксиса http|https|ftp|gopher|telnet, а хотелось бы и на наличие 
http:// и т.д.
*********** config.php *****************
[skipped]
---------------------------------------------------------
/* Return a valid url with 
http:// */
Function validateURL ($url) {
   /* Normal URLs, at least one dot in hostname */
   if (ereg("^(http|https|ftp|gopher|telnet)(://)([[:alnum:]._-]+)((\\.[[:alnum:]._-]+)+)((:[[:digit:]]+)?)((/[^[:space:]]*)?)$",$url,$regs)) {
     $url = $regs[1] . $regs[2] . $regs[3] . $regs[4] . $regs[6] . $regs[8];
     $protocol = $regs[1];
     $hostname = $regs[3] . $regs[4];
     $portnum = substr($regs[6],1,10); /* skip ":" */
     $path = $regs[8];
      return($url);
   /* Hostnames like (
http://www.ftp).blah.blah, with optional port and path */
   } elseif (ereg("^(www|ftp)((\\.[[:alnum:]._-]+)+)((:[[:digit:]]+)?)((/[^[:space:]]*)?)$",$url,$regs)) {
     if ($regs[1] == "ftp") {
         $proto = "ftp://";
      } else {
         $proto = "http://";
      }
     $url = $proto . $regs[1] . $regs[2] . $regs[4] . $regs[6];
     $hostname = $regs[1] . $regs[2];
     $port = substr($regs[4],1,10); /* skip ":" */
     $path = $regs[6];
      return($url);   
  } elseif (ereg("^(([[:alnum:]._-]+)+)((\\.[[:alnum:]_-]+)+)$",$url,$regs)) {
     $url = "http://" . $regs[2] . $regs[3];  
     $hostname = $regs[2] . $regs[3];  
    $path = $regs[5];
    return($url);    
   } else {
      return("");
   }
}
[skipped]
***********  test.php  *********************
[skipped]
if($link){
   $validURL = validateURL($link);
   if(!$validURL) {
   $errmsg = "Error: URL not validate!";
   }
}   
[skipped]