FILTER_VALIDATE_URL是否过于严格?
在 PHP 中,返回 .这是正确的吗?难道一个有效的URL或协议(http://,ftp:// 等)不需要在URL中明确说明才能正式正确吗?filter_var('www.example.com', FILTER_VALIDATE_URL)
false
www.example.com
在 PHP 中,返回 .这是正确的吗?难道一个有效的URL或协议(http://,ftp:// 等)不需要在URL中明确说明才能正式正确吗?filter_var('www.example.com', FILTER_VALIDATE_URL)
false
www.example.com
它不是一个有效的网址。在事物前面加上前缀从来都不是一件非常用户友好的事情,所以现代浏览器假设你的意思是http,如果你只是输入一个域名。软件库理所当然地更加挑剔一些!http://
您可以采用的一种方法是将字符串传递到parse_url,然后添加任何缺少的元素,例如
if ( $parts = parse_url($url) ) {
if ( !isset($parts["scheme"]) )
{
$url = "http://$url";
}
}
有趣的是,当您使用FILTER_VALIDATE_URL时,它实际上在内部使用parse_url来弄清楚方案是什么(查看源代码)。感谢salathe在下面的评论中发现了这一点。