|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 ! |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Le 16/07/2007 19:32, Thief13 a écrit :
> > 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(). |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
Le 16/07/2007 19:32, Thief13 a écrit :
> > 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(). |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
> 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 |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
> 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 |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Le 16/07/2007 23:11, Thief13 a écrit :
>> 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. |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Le 16/07/2007 23:11, Thief13 a écrit :
>> 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. |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
> 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.mbs...tring.overload A+, Philippe -- http://www.kitpages.fr |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen a écrit :
> Le 16/07/2007 23:11, Thief13 a écrit : >>> 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 |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
> 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.mbs...tring.overload A+, Philippe -- http://www.kitpages.fr |
|
|
|
#11 |
|
Messages: n/a
Hébergeur: |
>
> et pour les explications : > http://fr3.php.net/manual/fr/ref.mbs...tring.overload > Parfait ! c'est EXACTEMENT ce que je cherchais, merci beaucoup ! |
|
![]() |
| Outils de la discussion | |
|
|