PHP регулярное выражение для национальных доменов - PullRequest
3 голосов
/ 02 декабря 2010

Существуют домены и ДВУ новых наций, такие как "http://президент.рф/" - для доменов Российской Федерации или http://example.新加坡 для Сингапура ...

Существует ли регулярное выражение для проверки этих доменов?

Я нашел это: Какое регулярное выражение лучше всего проверить, является ли строка допустимым URL-адресом?

Но когда я пытаюсь использовать одно из перечисленных здесь выражений - PHP перегружается:)

preg_match(): Compilation failed: character value in \x{...} sequence is too large at offset 81

P.S.

1) Последняя часть была решена @ OmnipotentEntity

2) Но главная проблема - проверить международный домен - все еще существует, потому что пример регулярного выражения не проверяет хорошо.

Ответы [ 2 ]

3 голосов
/ 02 декабря 2010

Используйте модификатор "u" для сопоставления символов Юникода.В приведенном вами примере используется только модификатор "i".

2 голосов
/ 08 декабря 2010

Нет, регулярных выражений для проверки этих доменов нет. Каждый TLD имеет разные правила, относительно которых допустимы кодовые точки Unicode в их IDN (если таковые имеются). Вам понадобится очень большая справочная таблица, которую необходимо регулярно обновлять, чтобы знать, какие конкретные символы допустимы.

Кроме того, существуют правила относительно того, могут ли письменные символы слева направо и символы справа налево объединяться в одну метку DNS.

Кстати, RFC, упомянутые в других комментариях, устарели. Недавно утвержденный набор - RFC 5890 - 5895.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...