Разрешить только (английский и арабский) в коде UTF-8 - PullRequest
3 голосов
/ 24 июля 2011

Я ищу регулярное выражение для преобразования всех неанглийских и / или арабских слов в подчеркивание "_"

В настоящее время у меня есть следующий код, который работает, но я думаю, что у меня неправильный юникод *Диапазон 1003 *

, поскольку он позволяет использовать китайский и другие языки, которые мне не нужны в моем сценарии.

$title=~tr/[a-z0-9_\x7f-\xff]/_/cd;

Любая помощь будет признательна

Ответы [ 2 ]

9 голосов
/ 25 июля 2011

Если вы видите байты между \x7f и \xff, ваше приложение, вероятно, работает с байтами UTF-8, а не с символами Unicode. Прочитайте perldoc perlunicode, затем decode() свои строки, прежде чем пытаться работать с ними на этом уровне.

Как только это будет сделано, вы сможете искать английские и арабские символы, например:

/[\p{ASCII}\p{Arabic}]/

См. perldoc perluniprops для других свойств Unicode, которые вы можете использовать.

3 голосов
/ 08 мая 2012

Диапазон арабских (индикативных) цифр: \ x {0660} - \ x {0669}

Диапазон арабских букв: \ x {0621} - \ x {063A}\ x {0641} - \ x {064A}

Диапазон арабских гласных, включая «Tatweel», составляет: \ x {0640} \ x {064B} - \ x {0652}

Диапазон арабской пунктировки: \ x {060C} \ x {060D} \ x {061B} - \ x {061F} \ x {2E2E} \ x {066A} - \ x {066D}

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