Возможный дубликат:
Проверка / регулярное выражение PHP для URL-адреса
Есть ли простой, безопасный и быстрый способ проверить, действительно ли URL-адрес в PHP?
Да, есть! Использовать filter_var
:
if (filter_var($url, FILTER_VALIDATE_URL) !== false) ...
FILTER_VALIDATE_URL
проверяет URL-адреса в соответствии с RFC 2396 .
Хорошо, если мы посмотрим на RFC 3986, мы сможем найти определение URL-адреса.
И если мы рассмотрим Приложение B, есть руководство по использованию регулярных выражений для анализа URL-адреса:
Приложение B. Разбор ссылок на URI с регулярным выражением
Поскольку алгоритм «first-match-wins» идентичен «жадному»,
метод неоднозначности, используемый регулярными выражениями POSIX,
естественным и обычным для использования регулярного выражения для синтаксического анализа
потенциальные пять компонентов ссылки URI.Следующая строка – это регулярное выражение для разложения
хорошо сформированный ссылочный код URI в его компоненты.^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 12 3 4 5 6 7 8 9
Цифры во второй строке выше предназначены только для удобства чтения; они указывают контрольные точки для каждого подвыражения (т. е. каждая спаренная скобка). Мы ссылаемся на значение, сопоставляемое для подвыражения как $. Например, сопоставление указанного выражения с
http://www.ics.uci.edu/pub/ietf/uri/#Related
приводит к следующим подвыражениям:
$1 = http: $2 = http $3 = //www.ics.uci.edu $4 = www.ics.uci.edu $5 = /pub/ietf/uri/ $6 = <undefined> $7 = <undefined> $8 = #Related $9 = Related
где указывает, что компонент отсутствует, как это имеет место для компонента запроса в приведенном выше примере. Поэтому мы можем определить значение пяти компонентов как
scheme = $2 authority = $4 path = $5 query = $7 fragment = $9
Двигаясь в противоположном направлении, мы можем воссоздать ссылку URI из своих компонентов с помощью алгоритма Раздела 5.3.
Вы можете использовать это регулярное выражение для ручного анализа URL вручную или использования встроенной функции parse_url, доступной в PHP 4 и 5
Это зависит от вашего определения. Семантически корректно, разрешает доменное имя и т. Д.
Быстрый подход состоял бы в том, чтобы использовать preg_match для проверки URL-адреса в отношении хорошего регулярного выражения для проверки правильности его формата. В этом потоке есть несколько хороших примеров. Проверка / регулярное выражение PHP для URL-адреса