utiliser strlen a la place de mb_str len avec mbstring
6 réponses
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 !
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
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().
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().
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
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
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
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
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.
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.
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
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
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
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
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
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
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
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 !
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 !