如何在输入文本字段中仅允许阿拉伯字符?

时间:2012-09-24 12:44:30

标签: php regex arabic

我已经在这里搜索并找到了与此帖相关的类似帖子,但我还没有找到解决方案。

我试过这个:

$text = "الحمد لله رب العالمين hello";

echo $is_arabic = preg_match('/\p{Arabic}/u', $text);

我添加了unicode标志,但是如果我添加任何英文字符,它将返回true!对此有何解决办法?

有什么想法吗?

提前致谢

2 个答案:

答案 0 :(得分:4)

使用unicode标志:

$text = "الحمد لله رب العالمين";
echo $is_arabic = preg_match('/\p{Arabic}/u', $text);
                                   here __^

如果你只想匹配阿拉伯语,你应该这样做:

echo $is_arabic = preg_match('/^[\s\p{Arabic}]+$/u', $text);

答案 1 :(得分:3)

更新:我看到我显然错误的是没有得到支持的课程(尽管PCRE不支持“扩展属性,例如”希腊语“或”InMusicalSymbols“的文档”,但http://php.net/manual/en/regexp.reference.unicode.php#102756的评论说它们得到支持),所以我猜M42是更好的答案。但是,它们可以使用以下范围完成:

$text = "الحمد لله رب العالمين";

echo $is_arabic = 
preg_match('/^[\s\x{0600}-\x{06FF}\x{0750}-\x{077F}\x{08A0}-\x{08FF}\x{FB50}-\x{FDFF}\x{FE70}-\x{FEFF}\x{10E60}\x{10E60}—\x{10E7F}\x{1EE00}—\x{1EEFF}]+$/u', $text);