Exploitation des chaînes multi-octets en PHP
Vous pourriez trouver difficile de faire fonctionner une application PHP
existante dans un environnement multi-octets. Ceci est dû au fait
que la plupart des applications PHP sont écrites avec des fonctions
de chaînes de caractères standards comme la fonction
substr, qui est connue pour ne pas gérer
proprement les chaînes multi-octets.
Mbstring supporte aussi la surcharge de fonctions, pour
permettre le support des chaînes multi-octets sans modifier les
scripts PHP. En utilisant ce système de surcharge de fonctions,
certaines fonctions PHP seront remplacées par leur équivalent
de mbstring. Par exemple mb_substr remplacera
substr. Ce système de remplacement transparent,
permet un portage simple et efficace des applications.
Pour utiliser la surcharge de fonctions, définissez
mbstring.func_overload, dans le &php.ini;,
à une valeur positive qui représente une combinaison de masques d'octets
spécifiant les catégories de fonctions à surcharger. Il doit être définit à
1 pour surcharger la fonction mail, 2 pour les
fonction de chaînes, 4 pour les fonctions d'expression rationnelles.
Par exemple, avec la valeur 7, toutes les fonctions précédentes seront
surchargées. Voici la liste complète des fonctions surchargées, avec
leur fonction de remplacement.
Fonctions de remplacement
Valeur de mbstring.func_overload
Fonction originale
Fonction de remplacement
1
mail
mb_send_mail
2
strlen
mb_strlen
2
strpos
mb_strpos
2
strrpos
mb_strrpos
2
substr
mb_substr
2
strtolower
mb_strtolower
2
strtoupper
mb_strtoupper
2
substr_count
mb_substr_count
4
ereg
mb_ereg
4
eregi
mb_eregi
4
ereg_replace
mb_ereg_replace
4
eregi_replace
mb_eregi_replace
4
split
mb_split
Il n'est pas recommandé d'utiliser les options des fonctions d'overloading
dans un contexte de per-directory, car il n'est pas
confirmé encore qu'elles sont suffisamment stables dans un environnement
de production et peuvent conduire à un résultat incohérent.