【发布时间】:2011-06-02 20:44:37
【问题描述】:
我一直在寻找在 php 中验证 URL 的最佳方法,并决定同时使用正则表达式和 filter_val() 我想分享我的代码并获得一些反馈。
function _valid_urls($str) {
$regex = "/^(http):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";
if(!filter_var($str, FILTER_VALIDATE_URL) || (!preg_match($regex, $str))) //if invalid URL
{
return FALSE;
}
else
{
return TRUE;
}
}
代码有效,但我不完全确定它是否安全。
编辑:
我发现最有效的网站 URL 正则表达式是 /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \?=.-]*)*\/?$/
http://www.catswhocode.com/blog/10-regular-expressions-for-efficient-web-development
【问题讨论】:
-
您的正则表达式不太正确,但比 _VALIDATE_URL 更严格。但为什么你认为你需要两者?
-
取决于您对“有效 URL”的定义。
https怎么样?http://localhost或类似的怎么样?这是一个有效的 URL,但它未能通过您的验证。但是http://10.0.0.1.com通过了...
标签: php regex security validation url