如何在PHP中处理非拉丁语脚本输入的验证?

如何在PHP中处理非拉丁语脚本输入的验证?,php,regex,unicode,Php,Regex,Unicode,我正在尝试改编一个php应用程序来处理非拉丁语脚本(特别是日语、简体中文和阿拉伯语)。应用程序的数据验证例程经常使用正则表达式来检查输入,但我不确定如何在不在系统上安装其他区域设置的情况下将\w字符类型适应其他语言(我无法依赖) 随着我们支持的语言数量的增加(你经常在代码中看到“[\wÀ193;ÃÄÆÆÈÉ…等”),以前开发该应用程序的开发人员只是在正则表达式中添加了所需的字符,但我现在无法真正为所有需要支持的字母表这样做 有人对如何解决这个问题有什么建议吗?请参阅php.net上的评论: 例如

我正在尝试改编一个php应用程序来处理非拉丁语脚本(特别是日语、简体中文和阿拉伯语)。应用程序的数据验证例程经常使用正则表达式来检查输入,但我不确定如何在不在系统上安装其他区域设置的情况下将\w字符类型适应其他语言(我无法依赖)

随着我们支持的语言数量的增加(你经常在代码中看到“[\wÀ193;ÃÄÆÆÈÉ…等”),以前开发该应用程序的开发人员只是在正则表达式中添加了所需的字符,但我现在无法真正为所有需要支持的字母表这样做


有人对如何解决这个问题有什么建议吗?

请参阅php.net上的评论:

例如:

//$string may only contain arabic letters
preg_match('@^\p{Arabic}+$@u',$string);

//$string may only contain cyrillic letters
preg_match('@^\p{Cyrillic}+$@u',$string);

//$string may contain word-characters and greek
preg_match('@^[\p{Greek}\w]+$@u',$str);
……等等


演示:

什么是“验证”意思?您可以使用区域设置感知,但您要求的是“任何区域设置中的字母数字字符是什么”…unicode在PHP中被破坏了,我知道很多。如果能看到指向一些人们知道可以工作的库的链接,那就太好了。@在PHP中?大多数基本的字符串函数都不显式支持它,仅此而已。那些可以正常工作的函数。都很好,但是有任何东西可以匹配“任何语言或脚本中的任何字母字符”吗?啊,根据一些语言,支持
\p{Letter}
匹配“任何种类的字母”。PHP支持吗?@Kerrek SB:PHP(如果PCRE引擎是使用Unicode支持编译的-大多数都是),但是您仍然必须使用
u
修饰符。谢谢。这很有效,非常感谢您的帮助。对于那些想知道的人,regex是/\p{L}/u(“u”)修饰符,支持Unicode。