Discussion:
utiliser strlen a la place de mb_str len avec mbstring
(trop ancien pour répondre)
Thief13
2007-07-16 17:32:47 UTC
Permalink
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 !
Olivier Miakinen
2007-07-16 18:14:49 UTC
Permalink
Post by Thief13
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
2007-07-16 21:11:23 UTC
Permalink
Post by Olivier Miakinen
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
2007-07-16 21:55:53 UTC
Permalink
Post by Thief13
Post by Olivier Miakinen
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
2007-07-17 20:41:30 UTC
Permalink
Post by Olivier Miakinen
Post by Thief13
Post by Olivier Miakinen
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
2007-07-17 20:41:30 UTC
Permalink
Post by Thief13
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
2007-07-18 19:26:15 UTC
Permalink
Post by Philippe Le Van
http://fr3.php.net/manual/fr/ref.mbstring.php#mbstring.overload
Parfait ! c'est EXACTEMENT ce que je cherchais, merci beaucoup !

Continuer la lecture sur narkive:
Loading...