[PHP] substr() et UTF-8
Résolu
dimi3
Messages postés
269
Date d'inscription
Statut
Membre
Dernière intervention
-
dimi3 Messages postés 269 Date d'inscription Statut Membre Dernière intervention -
dimi3 Messages postés 269 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Afin de reconnaitre les lettres exotiques d'une entrée utilisateur dans un formulaire, je fais une boucle lisant un à un chacun des caractères de la chaine texte entrée :
$lettre = substr($entreeutilisateur,$i,1);
Puis je teste :
if ($lettre == " ĉ ") $lettre = "c";
Je m'aperçois que le test ne fonctionne pas. Le programme ne reconnaît pas les caractères recherchés.
Mon fichier PHP est pourtant sauvegardé avec l'encodage UTF-8.
A quoi cela pourrait-il être dû ?
Je vous remercie de votre avis.
Afin de reconnaitre les lettres exotiques d'une entrée utilisateur dans un formulaire, je fais une boucle lisant un à un chacun des caractères de la chaine texte entrée :
$lettre = substr($entreeutilisateur,$i,1);
Puis je teste :
if ($lettre == " ĉ ") $lettre = "c";
Je m'aperçois que le test ne fonctionne pas. Le programme ne reconnaît pas les caractères recherchés.
Mon fichier PHP est pourtant sauvegardé avec l'encodage UTF-8.
A quoi cela pourrait-il être dû ?
Je vous remercie de votre avis.
A voir également:
- Substr php utf8
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php ✓ - Forum PHP
- Php alert - Forum PHP
- Json_encode utf8 ✓ - Forum PHP
3 réponses
Bonjour
substr et strtr ne fonctionnent pas avec les chaînes en UTF8
Les fonctions standard du PHP travaillent sur la base 1 octet = 1 caractère, alors que l'utf8 peut utiliser plusieurs octets pour un seul caractère.
Pour travailler proprement avec l'utf8, il faut obligatoirement utiliser un bibliothèque comme mbstring (mb=multi byte)
https://www.php.net/manual/fr/book.mbstring.php
substr et strtr ne fonctionnent pas avec les chaînes en UTF8
Les fonctions standard du PHP travaillent sur la base 1 octet = 1 caractère, alors que l'utf8 peut utiliser plusieurs octets pour un seul caractère.
Pour travailler proprement avec l'utf8, il faut obligatoirement utiliser un bibliothèque comme mbstring (mb=multi byte)
https://www.php.net/manual/fr/book.mbstring.php
Je n'ai pas d'idée pour le problème d'UTF8, par contre je te signale la fonction « strtr » qui fait déjà toute seule ce que tu fais lettre par lettre.