0

I have an example from PHP.net to detect Arabic. Why doesn't it work?

$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.";
}
NullUserException
  • 83,810
  • 28
  • 209
  • 234
user1080247
  • 1,076
  • 4
  • 21
  • 51

1 Answers1

1

You shouldn't rely on character ranges for detecting arabic characters. You can directly use \p{Arabic} for detecting Arabic letters:

Following works fine:

$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.";

OUTPUT:

Text has some arabic/hebrew characters.
anubhava
  • 761,203
  • 64
  • 569
  • 643