仅允许(英语和阿拉伯语)使用UTF-8代码

时间:2011-07-24 19:51:10

标签: php perl unicode utf-8

我正在寻找一个正则表达式将所有非英语和/或阿拉伯语改为下划线“_”

目前我有以下代码可以使用,但我认为我有错误的unicode

范围,因为它允许中文和我的剧本中不需要的其他语言。

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

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:9)

如果您看到\x7f\xff之间的字节,您的应用程序可能使用UTF-8字节,而不是Unicode字符。在尝试使用此级别之前,请先阅读perldoc perlunicode,然后decode()您的字符串。

完成后,您应该可以搜索英语和阿拉伯语字符,例如:

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

有关您可以使用的其他Unicode属性,请参阅perldoc perluniprops

答案 1 :(得分:3)

阿拉伯语(印度语)数字的范围是:\ x {0660} - \ x {0669}

阿拉伯字母的范围是:\ x {0621} - \ x {063A} \ x {0641} - \ x {064A}

包括“Tatweel”在内的阿拉伯语元音的范围是:\ x {040B} - \ x {0652}

阿拉伯语puncation的范围是:\ x {060C} \ x {060D} \ x {061} - \ x {061F} \ x {2E2E} \ x {066A} - \ x {066D}