Что-нибудь, начинающееся с http://, проверяется ФИЛЬТРОМ ПО URL-адресу ПРОВЕРКИ?


Я тестировал со строками и int, которые я могу себе представить, если они начинаются с http://, это будет допустимый URL-адрес с использованием FILTER_VALIDATE_URL. Итак, зачем нам нужен FILTER_VALIDATE_URL? Почему бы просто не добавить http:// на вход всякий раз, когда мы хотим сделать его действительным?

var_dump(filter_var ('http://example',FILTER_VALIDATE_URL ));
Author: Jenny, 2012-08-29

1 answers

Технически, любой URI, который начинается со схемы (например, http://) и содержит допустимые символы 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!
}
 10
Author: rdlowrey, 2012-08-29 02:40:18