[PHP] substr() et UTF-8
Résolu
                    
        
     
             
                    dimi3
    
        
    
                    Messages postés
            
                
     
             
            278
        
            
                                    Statut
            Membre
                    
                -
                                     
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.
                
            
                
    
    
    
        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
- Php alert ✓ - Forum PHP
- Alert PHP - Forum PHP
- Retour a la ligne php - Forum Webmastering
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
