PHP mb_substr() ne fonctionne pas correctement?
Ce code
print mb_substr('éxxx', 0, 1);
imprime un espace vide 🙁
Il est censé pour imprimer le premier caractère, é
. Cela semble fonctionner, cependant:
print mb_substr('éxxx', 0, 2);
Mais c'est pas bon, parce que (0, 2) 2 caractères...
Vous devez vous connecter pour publier un commentaire.
Essayer de passer le paramètre d'encodage de mb_substr, en tant que tel:
L'encodage n'est jamais détecté automatiquement.
mb_detect_encoding
à en fait, essayer de détecter l'encodage?substr($string, 1)
sans lui donner le mb_strlen() argument ?mb_internal_encoding
au lieu de passer"utf-8"
à tousmb_*
fonctions? Tout comme Álvaro G. Vicario a soulignéDans la pratique, j'ai constaté que, dans certains systèmes, multi-octets fonctions par défaut ISO-8859-1 pour le codage interne. Effectivement les ruines de leur capacité à gérer le multi-octets de texte.
Un bon défaut sera probablement résoudre ce problème et d'autres problèmes: