我正在使用ereg方法验证网址。这是我的代码:
function validationURL($URL) {
if (ereg("^(http://www|www)[.]([a-z,A-Z,0-9]+)([-,_])([a-z,A-Z,0-9]+)[.]([a-z,A-Z]){2,3}[.]?(([a-z,A-Z]){2,3})[/]?[~]?([/,a-z,A-Z,0-9]+)?$",$URL)){
return true;
} else {
return false;
}
}
if ($website !="" && $website !=NULL) {
if (validationURL($website)){
$websiteOk = true;
} else {
$errmsg = $errmsg . "URL Is Invalid.<br>";
$websiteOk = false;
}
}
任何人都可以告诉我这段代码有什么问题。我测试了www.google.com.my,但它无效。
答案 0 :(得分:5)
也许不是你问题的答案,但你知道从PHP5开始有更好的方法吗?该函数名为filter_var,您可以使用它来验证URL和电子邮件地址等。例如:
$website = $_POST['postedInAForm_Maybe'];
if (filter_var($website, FILTER_VALIDATE_URL)) {
echo "Yay!";
} else {
echo "Nah.";
}
您可以找到过滤器here。
答案 1 :(得分:3)
我不是最好的正则表达式,但你看过PHP内置的过滤器[默认情况下启用过滤器扩展从PHP 5.2.0开始。]?
有一个网址过滤器: http://us.php.net/manual/en/filter.filters.validate.php
特定网址过滤示例: http://www.phpro.org/tutorials/Filtering-Data-with-PHP.html#8
答案 2 :(得分:0)
我同意Björn,但如果你不能使用filter_var,那么使用preg函数(Perl-Compatible Regular Expressions)总是更好,因为ereg(POSIX)函数现在已被折旧。
This blog post有一些非常好的REGEX示例。