Я в курсе filter_var()
И его FILTER_VALIDATE_URL
фильтр. Дело в том, что есть некоторые URL, которые существуют, но не считаются действительными, и мне нужно их проверить. Например, URL с пробелами.
На данный момент я проверяю только те протоколы, которыми интересуется приложение (http, https и ftp), используя strpos()
,
Но мне было интересно, есть ли в PHP более общий метод, который я мог бы использовать?
Это может помочь, если я объясню, что мне нужно различать, если целевой источник — это URL или локальный путь.
Использовать функцию parse_url()
разделить URL-адрес на компоненты, а затем выполнить базовый анализ возвращаемых частей (или просто проверить, является ли возвращаемое значение array()
или же FALSE
).
Как сказано в документации:
Эта функция не предназначена для проверки заданного URL, она только разбивает его на перечисленные выше части. Частичные URL также принимаются,
parse_url()
старается разобрать их правильно.
А также:
На серьезно искаженных URL,
parse_url()
может вернутьсяFALSE
,
Похоже, это очень хорошо соответствует вашему запросу.
Других решений пока нет …