utiliser strlen a la place de mb_str len avec mbstring

Le
Thief13
Bonjour à tous

J'ai lu quelquepart qu'il était possible de faire en sorte d'utiliser
strlen à la place de mb_strlen avec mbstring (meme si ça bouffait un
peut les perf).

Malheureusement, je n'arrive pas à retrouver ou, ni comment

Si quelqu'un a quelques pistes, je le remerci d'avance !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #36195

J'ai lu quelquepart qu'il était possible de faire en sorte d'utiliser
strlen à la place de mb_strlen avec mbstring (meme si ça bouffait un
peut les perf).


Il faudrait que tu précises un peu ton besoin.

1) Si le charset est de type monobyte, par exemple US-ASCII ou
ISO-8859-1, alors mb_strlen($str) == strlen($str).

2) Si le charset est un multibyte constant, mettons 2 octets par
caractère, et que l'octet 0 n'intervient jamais en dehors du code
de fin de chaîne, alors mb_strlen($str) == strlen($str)/2.

3) Si le charset est un multibyte constant, mais que tu peux rencontrer
des octets à 0 un peu partout (par exemple pour les caractères ASCII),
alors il y a toutes les chances pour que strlen($str) retourne 0 ou 1
quelle que soit la longueur de la chaîne retournée par mb_strlen($str).

4) Si le charset est un multibyte variable, par exemple UTF-8, alors
tous les paris sont perdus d'avance (sauf si ta chaîne ne contient en
fait que de l'US-ASCII).

Bref... dis-nous quel charset tu utilises, et on te dira quel degré de
folie il faut avoir pour utiliser strlen() au lieu de mb_strlen().

Thief13
Le #36194
4) Si le charset est un multibyte variable, par exemple UTF-8, alors
tous les paris sont perdus d'avance (sauf si ta chaîne ne contient en
fait que de l'US-ASCII).


C'est ça, mais j'ai lu que c'était possible de faire en sorte que php
fasse des alias des fonction mb en remplacement des fonctions normales,
meme si ça bouffais de la ressources

Olivier Miakinen
Le #36193
4) Si le charset est un multibyte variable, par exemple UTF-8, alors
tous les paris sont perdus d'avance (sauf si ta chaîne ne contient en
fait que de l'US-ASCII).


C'est ça, mais j'ai lu que c'était possible de faire en sorte que php
fasse des alias des fonction mb en remplacement des fonctions normales,
meme si ça bouffais de la ressources


Tu veux dire un truc de ce genre là ?

-------------------------------------------------------------
undef(strlen)
function strlen($str) { return mb_strlen($str, "UTF_8"); }
-------------------------------------------------------------

Je ne crois pas que ce soit possible. À moins de recompiler toi-même
l'interpréteur PHP bien sûr.


Thief13
Le #36191
4) Si le charset est un multibyte variable, par exemple UTF-8, alors
tous les paris sont perdus d'avance (sauf si ta chaîne ne contient en
fait que de l'US-ASCII).
C'est ça, mais j'ai lu que c'était possible de faire en sorte que php

fasse des alias des fonction mb en remplacement des fonctions normales,
meme si ça bouffais de la ressources


Tu veux dire un truc de ce genre là ?

-------------------------------------------------------------
undef(strlen)
function strlen($str) { return mb_strlen($str, "UTF_8"); }
-------------------------------------------------------------

Je ne crois pas que ce soit possible. À moins de recompiler toi-même
l'interpréteur PHP bien sûr.


Je ne sais pas... je vais essayer de retrouver le site sur lequel j'ai
vu ça et je reviendrai ici



Philippe Le Van
Le #36192
J'ai lu quelquepart qu'il était possible de faire en sorte d'utiliser
strlen à la place de mb_strlen avec mbstring (meme si ça bouffait un
peut les perf).


Bonjour,

dans ta conf apache, tu peux ajouter (ou le changer dans ton php.ini).
php_value mbstring.func_overload 7

et pour les explications :
http://fr3.php.net/manual/fr/ref.mbstring.php#mbstring.overload

A+, Philippe
--
http://www.kitpages.fr

Thief13
Le #35721

et pour les explications :
http://fr3.php.net/manual/fr/ref.mbstring.php#mbstring.overload



Parfait ! c'est EXACTEMENT ce que je cherchais, merci beaucoup !

Publicité
Poster une réponse
Anonyme