Страницы

Поиск по вопросам

вторник, 8 января 2019 г.

Проверка валидности url. PHP

Я нарыл такое: $a = 'http://site.ru'; if (preg_match('/^(http:\/\/|https:\/\/)?[0-9a-zA-Zа-яА-ЯёЁ]{1,3}+[.][0-9a-zA-Zа-яА-ЯёЁ]+[.][0-9a-zA-Zа-яА-ЯёЁ]{2,6}+$/', $a)) echo "yes"; else echo "no"; Но эта штука все время выдает "no". Мне кажется это из за кириллицы. Ее убирать нельзя. сайт.рф ведь... Помогите пожалуйста, как исправить. Я работаю в кодировке UTF-8 Вот нарыл по-лучше, но не могу кириллицу добавить.. Помогите плиз function is_url($in){ $w = "a-z0-9"; $url_pattern = "#( (?:f|ht)tps?://(?:www.)? (?:[$w\\-.]+/?\\.[a-z]{2,4})/? (?:[$w\\-./\\#]+)? (?:\\?[$w\\-&=;\\#]+)? )#xi";
$a = preg_match($url_pattern,$in); return $a; }


Ответ

Для проверки url советую :
filter_var($url, FILTER_VALIDATE_URL)
В плане проверки русскоязычных доменов могу рекомендовать смотреть в сторону конвертации в IDN, т.е. к виду xn--af1bc.net тогда проблем с русским точно не будет. В стандартном наборе таких функций нет, только декодирование. Если есть возможность поставить соответствующий модуль PECL, то на мой взгляд это идеальное решение.

Комментариев нет:

Отправить комментарий