В принципе работает, но происходит проверка только на наличие точки и правильность ситаксиса 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]