[PHP] substr() et UTF-8

Résolu/Fermé
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 - 8 mars 2010 à 12:33
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 - 8 mars 2010 à 19:53
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.
A voir également:

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
2
boz75 Messages postés 45 Date d'inscription vendredi 28 août 2009 Statut Membre Dernière intervention 27 septembre 2015 4
8 mars 2010 à 13:20
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.
0
dimi3 Messages postés 269 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 1 avril 2011 20
8 mars 2010 à 19:53
Merci à tous deux pour l'attention que vous avez portée à ma question.
Je ne connaissais pas cette bibliothèque "mbstring" qui a résolu parfaitement mes problèmes.

Mille mercis pour m'avoir tiré d'une galère de plusieurs jours.
0