Php 为什么';t mb_ereg()是否检测阿拉伯字符?

Php 为什么';t mb_ereg()是否检测阿拉伯字符?,php,regex,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 {

我有一个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.";
}

您不应该依赖字符范围来检测阿拉伯语字符。您可以直接使用
\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.

对我有用。你说“不行”是什么意思?对我来说也行。但是为什么不使用
\p{阿拉伯语}
\p{希伯来语}
?更具可读性。@Jon:虽然我的答案似乎是从你的评论中抄来的,但我发誓我没有抄。在我提交的那一刻,我看到你的评论说了同样的话。它应该。。。假设您将文件保存为UTF-8。这里有一个小警告:
preg\u match()
不是像
mb\u ereg()那样的多字节安全的。
u
修饰符不会改变这一点。请参阅。@NullUserException:是的,这是真的。为什么仍然给我文本没有阿拉伯文/希伯来文字符。