2013-06-27 41 views
6

爲什麼filter_var()接受並驗證此URL http://http://www.google.comfilter_var()接受無效URL

$website = "http://http://www.google.com"; 

echo filter_var($website, FILTER_VALIDATE_URL); // This outputs the value of $website 

我認爲這是錯誤的。任何解決方案或修復?

phpinfo()

enter image description here

+0

爲什麼你認爲該URL是錯誤的? – zerkms

+2

@zerkms有兩個'http://'。 –

+0

糟糕,我的注意力最終被'com.ph'偷走了) – zerkms

回答

2

好像你已經找到了在PHP中的錯誤。 PHP手冊指出FILTER_VALIDATE_URL根據http://www.faqs.org/rfcs/rfc2396.html驗證uris

如果您閱讀了規範,PHP顯然未能根據指南進行正確驗證。具體來說,在第3節(URI句法組件)中,它定義了方案(在你的情況下爲http)可能只存在一次,並且在uri中唯一的冒號之前。

你應該找到它在https://bugs.php.net/

良好的工作報告中的錯誤!

+1

謝謝,爲此提交了一個錯誤報告。 https://bugs.php.net/bug.php?id=65141 –