Лучший способ проверить URL в PHP - PullRequest
2 голосов
/ 21 августа 2011

Я читал различные сообщения о переполнении стека, чтобы попытаться найти идеальный способ проверки URL в PHP. Мое исследование нашло три возможных решения, однако ни одно из них не является идеальным.

Три упомянутых метода: регулярное выражение, filter_var ($url, FILTER_VALIDATE_URL) и parse_url (). Проблемы с первым подходом уже хорошо известны, и наиболее полное регулярное выражение валидации, которое я мог найти, охватывает страницы. Кажется, что функция filter_var, встроенная в расширение фильтрации PHP, имеет ошибки, такие как URL-адрес http: // ... как допустимый. Метод parse_url использует функцию, которая никогда не предназначалась для проверки URL и поэтому не может зависеть от этой задачи.

Есть ли другие варианты, касающиеся проверки URL в PHP, которые я мог пропустить?

Ответы [ 2 ]

2 голосов
/ 21 августа 2011

Как насчет того, чтобы объединить filter_var (что в основном является проверкой регулярных выражений, охватывающей страницы) с дополнительной проверкой регулярных выражений для случаев, которые, по вашему мнению, не покрываются этим хорошо?

1 голос
/ 21 августа 2011

Обычно я использую parse_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...
}
...