How can i allow only arabic characters in input te

2019-02-19 21:24发布

I already searched here and found similar posts related to this post but i did not find a solution yet .

i tried this :

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

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

I add the unicode flag but if i add any English characters it is returning true ! any fix for this ?

Any idea folks ?

Thanks in advance

标签: php regex arabic
2条回答
迷人小祖宗
2楼-- · 2019-02-19 21:46

Use unicode flag:

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

If you want to match only arabic you should do:

echo $is_arabic = preg_match('/^[\s\p{Arabic}]+$/u', $text);
查看更多
萌系小妹纸
3楼-- · 2019-02-19 21:54

Update: I see I am apparently wrong about classes not being supported (though the docs at say "Extended properties such as "Greek" or "InMusicalSymbols" are not supported by PCRE" but the comment at http://php.net/manual/en/regexp.reference.unicode.php#102756 says they are supported), so I guess M42's is the better answer. They can, however, be done with ranges as follows:

$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);
查看更多
登录 后发表回答