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

Tar*_*req 3 php unicode perl utf-8

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

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

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

$title=~tr/[a-z0-9_\x7f-\xff]/_/cd;
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激

dus*_*uff 9

如果你看到\x7f和之间的字节\xff,你的应用程序可能使用UTF-8字节,而不是Unicode字符.阅读perldoc perlunicode,然后decode()试图在这个层面上与他们合作之前,你的字符串.

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

/[\p{ASCII}\p{Arabic}]/
Run Code Online (Sandbox Code Playgroud)

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

  • 英语不是ASCII.这是一个神话.英语使用拉丁文脚本,而不是ASCII块.你想要`[\ p {Latin}\p {Arabic}\p {Common}\p {Inherited}]`.请参阅[我的三个关于Unicode的OSCON讲座](http://training.perl.com/OSCON2011/index.html). (5认同)
  • 用户要注意,"ASCII"太受限制而不能用于英语,不要只是将其添加到您的代码库中,而无需进一步检查您正在使用的特定文本所需的内容.以迭代方式添加更多道具.唉,英语没有神奇的通用属性集合. (3认同)