使用ereg验证PHP中的URL

使用ereg验证PHP中的URL,php,Php,我正在使用ereg方法验证URL。这是我的密码: 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 {

我正在使用ereg方法验证URL。这是我的密码:

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,但它不起作用。

我不是正则表达式的最佳使用者,但您是否研究过PHP内置过滤器[过滤器扩展在PHP5.2.0中默认启用]

有一个URL筛选器:

特定URL筛选器示例:

也许不是你问题的答案,但你知道有更好的方法来解决这个问题吗?该函数被调用,您可以使用它来验证URL和电子邮件地址以及其他内容。例如:

$website = $_POST['postedInAForm_Maybe'];
if (filter_var($website, FILTER_VALIDATE_URL)) {
    echo "Yay!";
} else {
    echo "Nah.";
}

你可以找到过滤器。

我同意Björn的观点,但是如果你不能使用filter_var,那么最好使用preg函数和Perl兼容的正则表达式,因为ereg POSIX函数现在已经贬值了

有一些非常好的正则表达式示例