2016-09-16 57 views
3

爲什麼PHP函數:FILTER_VALIDATE_URL認爲具有包含下劃線的子域的URL是無效的?PHP - FILTER_VALIDATE_URL未找到具有下劃線的子域

<?php 
$url = "http://smiling_politely.blogspot.com"; 

if (!filter_var($url, FILTER_VALIDATE_URL) === false) { 
    echo("$url is a valid URL"); 
} else { 
    echo("$url is not a valid URL"); 
} 
?> 

如何確保此FILTER_VALIDATE_URL包含此類現有URL(可能是最快的執行方式)?

+4

仍然打開https://bugs.php.net/bug.php?id=64948 – AbraCadaver

+0

嗯 - 2013 -05-30 14:59 UTC,現在已經超過3年了.. – Tom

+0

沒有人決定是否應該改變我猜。 – AbraCadaver

回答

1

好吧,我想出了這個解決方案,希望它去上班好..

<?php 

$url = "http://smiling_politely.blogspot.com"; 
$check = parse_url($url,PHP_URL_HOST); 

if(null!==$check) echo 'Valid'; else echo 'NOT valid.'; 

?> 
+0

'parse_url'也是更好的,因爲它使用[RFC3986](http://www.faqs.org/rfcs/rfc3986.html),這是目前的效果。相比之下,'FILTER_VALIDATE_URL'使用[RFC2396](http://www.faqs.org/rfcs/rfc2396.html),它已經過時。 – apokryfos