Note that mb_ereg() does not support the \uFFFF unicode syntax but uses \x{FFFF} instead:
<?PHP
$text = 'Peter is a boy.'; // english
$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.";
}
?>
mb_ereg
(PHP 4 >= 4.2.0, PHP 5)
mb_ereg — Recherche par expression rationnelle avec support des caractères multi-octets
Description
$pattern
, string $string
[, array $regs
] )Recherche par expression rationnelle avec support des caractères multi-octets.
Liste de paramètres
-
pattern -
Le masque de recherche.
-
string -
La chaîne sur laquelle porte la recherche.
-
regs -
Contient une sous-chaîne de la chaîne string.
Valeurs de retour
Exécute l'expression rationnelle pattern avec
le support des caractères multi-octets sur la chaîne string.
mb_ereg() retourne 1 si des segments de
chaîne qui vérifient le masque ont été trouvés. Le troisième
paramètre est optionnel. S'il est fourni, mb_ereg()
retournera la taille du segment de chaîne identifié,
regs contient les sous-chaînes. Si rien
n'est trouvé, la fonction retourne FALSE.
Notes
Note:
L'encodage interne ou l'encodage des caractères spécifié par la fonction mb_regex_encoding() sera utilisé comme encodage de caractères pour cette fonction.
Voir aussi
- mb_regex_encoding() - Définit/Récupère l'encodage des caractères pour les expressions rationnelles multi-octets
- mb_eregi() - Expression rationnelle insensible à la casse avec le support des caractères multi-octets
I could easily remove any non Persian (Farsi) characters using this function, the range for Arabic and Persian are shared so this code could be used for Arabic too.
<?php mb_ereg_replace("[^-ۿ]","-",$string); ?>
This is the reference for finding the character range of Unicode languages:
http://unicode.org/charts/
Hebrew regex tested on PHP 5, Ubuntu 8.04.
Seems to work fine without the mb_regex_encoding lines (commented out).
Didn't seem to work with \uxxxx (also commented out).
<?php
echo "Line ";
//mb_regex_encoding("ISO-8859-8");
//if(mb_ereg(".*([\u05d0-\u05ea]).*", $this->current_line))
if(mb_ereg(".*([א-ת]).*", $this->current_line))
{
echo "has";
}
else
{
echo "doesn't have";
}
echo " Hebrew characters.<br>";
//mb_regex_encoding("UTF-8");
?>
