Php 为什么';t mb_ereg()是否检测阿拉伯字符?
我有一个PHP.net的例子来检测阿拉伯语。为什么不起作用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 {
$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:是的,这是真的。为什么仍然给我文本没有阿拉伯文/希伯来文字符。