Я читал разные сообщения в Stack Overflow, чтобы попытаться найти идеальный способ проверки URL-адреса на PHP. Мои исследования придумали три возможных решения, однако ни один из них не идеален.
Три упомянутых метода: regex, filter_var ($url, FILTER_VALIDATE_URL)
и parse_url ()
. Проблемы с первым подходом уже хорошо известны, и наиболее полное регулярное выражение регулярных выражений я мог найти натянутые страницы. Функция filter_var, встроенная в расширение фильтрации PHP, имеет недостатки, такие как обработка URL-адреса, такого как http: // …, как действительная. Метод parse_url использует функцию, которая никогда не предназначалась для проверки URL-адресов и поэтому не может зависеть от этой задачи.
Существуют ли какие-либо другие варианты проверки URL-адресов в PHP, которые я, возможно, пропустил?
Как насчет того, что вы объединяете filter_var
(который в основном является проверкой регулярных выражений, который охватывает страницы) с дополнительной проверкой регулярных выражений на случаи, которые, как вы думаете, не покрываются им?
Я обычно использую parse_url()
для проверки / проверки URL (в большинстве случаев мне нужно определить, является ли URL уже действительным URL-адресом или относительным URL-адресом)
if (parse_url($url, PHP_URL_SCHEME) != '') { // Url is absolute } else { // Url is not an absolute url, and therefore, need more validation... }