为什么mb_ereg()没有检测到阿拉伯字符?

时间:2013-10-02 15:46:41

标签: php regex

我有一个来自PHP.net的例子来检测阿拉伯语。为什么不起作用?

$text = 'بيتر هو صبي.'; // arabic
//$text = 'פיטר הוא ילד.'; // hebrew

mb_regex_encoding('UTF-8');

if(mb_ereg('[\x{0600}-\x{06FF}]', $text)) // arabic range
//if(mb_ereg('[\x{0590}-\x{05FF}]', $text)) // hebrew range
{
    echo "Text has some arabic/hebrew characters.";
}
else
{
    echo "Text doesnt have arabic/hebrew characters.";
}

1 个答案:

答案 0 :(得分:1)

您不应该依赖字符范围来检测阿拉伯字符。您可以直接使用\p{Arabic}来检测阿拉伯字母:

以下工作正常:

$text = 'بيتر هو صبي.'; // arabic
//$text = 'פיטר הוא ילד.'; // hebrew
if (preg_match('~\p{Arabic}~u', $text))
    echo "Text has some arabic/hebrew characters.";
else
    echo "Text doesnt have arabic/hebrew characters.";

<强>输出:

Text has some arabic/hebrew characters.