我使用字符串和int進行了測試,我可以想象,只要它以http://開頭,它將是使用FILTER_VALIDATE_URL的有效URL。那麼,爲什麼我們需要FILTER_VALIDATE_URL?爲什麼不在輸入中添加http://就可以使其有效?任何以http://開頭的內容都會被FILTER_VALIDATE_URL驗證嗎?
var_dump(filter_var ('http://example',FILTER_VALIDATE_URL));
我使用字符串和int進行了測試,我可以想象,只要它以http://開頭,它將是使用FILTER_VALIDATE_URL的有效URL。那麼,爲什麼我們需要FILTER_VALIDATE_URL?爲什麼不在輸入中添加http://就可以使其有效?任何以http://開頭的內容都會被FILTER_VALIDATE_URL驗證嗎?
var_dump(filter_var ('http://example',FILTER_VALIDATE_URL));
那麼從技術上說,這是後的方案開始(如http://
),包含合法的URI字符的任何URI是按照官方的URI規範有效在RFC 3986:
每個URI開始使用第3.1節中定義的方案名稱,該名稱引用了該方案中用於分配標識符的規範。如此,URI語法是聯合且可擴展的命名系統,其中每個方案的規範可以進一步限制使用該方案的標識符的語法和語義。
所以,你得到的回報沒有什麼奇怪的 - 這就是應該發生的事情。至於爲什麼你應該使用filter_var
和FILTER_VALIDATE_URL
這個標誌......它比在每個可能的URL方案中做下面的事情更符合語義,你不同意嗎?
if (strpos($url, 'http://') === 0
|| strpos($url, 'ftp://') === 0
|| strpos($url, 'telnet://') === 0
) {
// it's a valid URL!
}
告訴我們你測試了什麼,以及如何。 – 2012-08-29 02:32:51
嘗試使用http:// 20,http://示例,它們是否有效 – Jenny
您用來做測試的rhe代碼是? – 2012-08-29 02:38:21