[PHP] substr() et UTF-8

Résolu
dimi3 Messages postés 278 Statut Membre -  
dimi3 Messages postés 278 Statut Membre -
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.
Configuration: Windows 7 / Safari 532.5

3 réponses

  1. le père
     
    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
  2. boz75 Messages postés 49 Statut Membre 4
     
    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
  3. dimi3 Messages postés 278 Statut Membre 20
     
    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