IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction str_replace et utf-8.


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Points : 89
    Points
    89
    Par défaut Fonction str_replace et utf-8.
    Bonjour,

    Je galère depuis plusieurs heures avec la fonction str_replace.

    Je parse un flux xml en utf-8, mon site est en utf-8 (module mbstring)

    Je fais ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $car_speciaux = array( 'À','Á','Â','Ã','Ä','Å','Æ','à','á','â','ã','ä','å','æ','È','É','Ê','Ë','è','é','ê','ë','Ì','Í','Î','Ï','ì','í','î','ï','Ò','Ó','Ô','Õ','Ö','Ø','ò','ó','ô','õ','ö','ø','Ù','Ú','Û','Ü','ù','ú','û','ü','ß','Ç','ç','Ð','ð','Ñ','ñ','Þ','þ','Ý','œ','\'','','(',')','+',':','/',' ','@','&','%','?','*',':',';','"','#','<','>',',');
     
    $car_normaux  = array( 'A','A','A','A','A','A','A','a','a','a','a','a','a','a','E','E','E','E','e','e','e','e','I','I','I','I','i','i','i','i','O','O','O','O','O','O','o','o','o','o','o','o','U','U','U','U','u','u','u','u','B','C','c','D','d','N','n','P','p','Y','oe','-','-','-','-','-','-','-','-','-','et','','-','-','-','-','','-','-','-','-');
     
    $rubrique = str_replace ($car_speciaux, $car_normaux, $rubrique);
    Voici ce que j'obtiens:
    Avant: Mode, santé & beauté
    Après: mode-santa-et-beauta

    Avant: bébé
    Après: baba

    Avant: garçon
    Après: garaon

    En gros il me remplace toutes les lettres accentué par un a !!!

    Quelqu'un voit-il où est le probléme ?
    Je pense que cela viens de l'utf-8 mais je ne vois pas comment y remedier.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Vérifie que ton fichier PHP est bien ecrit en UTF8

  3. #3
    mon_nom_est_personne
    Invité(e)
    Par défaut
    comme l'a dit sabotage, verifie que le script est ecrit en utf-8. Ensuite mets en premiere ligne de ton script
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    mb_internal_encoding('UTF-8');
    ?>
    Car meme si ton script est en utf-8, si ton encodage par defaut dans ton php.ini est iso-..... les fonctions prendrons l'encodage par defaut comme prevalant.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Points : 186
    Points
    186
    Par défaut
    Il n'existe pas aussi une fonction utf8_encode ou quelque chose du genre ?

  5. #5
    mon_nom_est_personne
    Invité(e)
    Par défaut
    non, c'est unicode_encode (http://jp.php.net/manual/en/function.unicode-encode.php) et ca retourne les code unicode des caracteres, a savoir \u12345 et en plus elle est experimentale, donc pas tres recommandee.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Points : 186
    Points
    186
    Par défaut
    La fonction dont je parle est plus ça : http://fr2.php.net/manual/fr/function.utf8-encode.php

  7. #7
    mon_nom_est_personne
    Invité(e)
    Par défaut
    au temps pour moi. Cependant ca va pas marcher car cette fonction attend une chaine en iso-8..... en entree, et son format en entree est justement utf-8. Donc il a 2 solutions:
    - soit forcer l'encodage de son script en utf-8 (sauvegarde fichier +/ou mb_internal_encoding)
    - Ou convertir la chaine en entree dans l'encodage de son script avec mb_convert_encoding

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Points : 186
    Points
    186
    Par défaut
    En effet.

    Pour ma part, sous eclipse j'encode directement les fichiers php en ISO-8859-15. Il peut peut directement le faire en UTF-8. Si je ne dis pas de bêtise, les caractères dans le fichier seront également encodés en UTF-8.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 155
    Points : 89
    Points
    89
    Par défaut
    Bien vu, le document contenant les deux tableaux et qui est inséré en include n'étais pas en utf-8.

    Un oublie lors du passage du site en utf-8.

    Sinon, j'ai juste encodé ma page en utf-8 dans dream.
    Ça marche nickel, pas besoin de fonctions supplémentaires.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de la fonction str_replace
    Par turican2 dans le forum Langage
    Réponses: 5
    Dernier message: 11/10/2008, 12h45
  2. problème fonction str_replace
    Par Sh4dow49 dans le forum Langage
    Réponses: 5
    Dernier message: 21/07/2008, 13h23
  3. [Tableaux] simplifier fonction str_replace
    Par nicerico dans le forum Langage
    Réponses: 7
    Dernier message: 04/12/2006, 15h45
  4. [Système] Probleme avec la fonction str_replace
    Par british_toons dans le forum Langage
    Réponses: 1
    Dernier message: 21/09/2006, 19h57
  5. [Tableaux] Fonction str_replace et les accents
    Par GarGamel55 dans le forum Langage
    Réponses: 5
    Dernier message: 18/02/2006, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo