filter_var($url, FILTER_VALIDATE_URL)
кажется, отличный способ определить, содержит ли $url
url или нет. Есть ли способ увидеть, какое регулярное выражение использует эта функция для обнаружения?
спасибо
Он использует что-то еще, а затем регулярное выражение. В C он проверяет возврат функции php_url_parse_ex()
(C), которую вы можете увидеть по адресу: ext / standard / url.c, строка 97 , вызывается по адресу ext / filter / logical_filters.c, строка 440 .
В этих терминах: если вы вызываете parse_url()
(PHP) в PHP и выполняете те же проверки, что и в php_filter_validate_url()
(C), вы должны иметь тот же результат.
Шаблон похож на синтаксический анализ URL.
$pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
Ответ Криса на регулярное выражение PHP для проверки URL-адреса использует parse_url, который, после прочтения ответа Wrikken о том, что на самом деле делает filter_var ($ url, FILTER_VALIDATE_URL), кажется лучшим, потому что он позволяет контролировать большинство.