Mb_ereg_replace et utf-8

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Toma, 15 Février 2009.

Tags:
  1. Toma
    Toma WRInaute discret
    Inscrit:
    18 Janvier 2006
    Messages:
    217
    J'aime reçus:
    0
    J'essaie d'utiliser des expressions régulières avec l'utf-8. Je galère un max.
    J'en suis arrivé à cet exemple que je n'arrive pas à comprendre :

    Code:
    mb_internal_encoding("UTF-8");mb_regex_encoding("UTF-8");
    
    echo mb_ereg_replace('[à]', '#', 'test à'); // test à
    echo mb_ereg_replace('à', '#', 'test à'); // test #
    
    Tout semble bien marcher avec les caractères non ascii sauf quand ils sont entre crochets. Ce qui limite grandement l'intérêt des expressions régulières...

    Si quelqu'un a une explication je suis preneur !

    PS : je précise que mon fichier est bien en UTF-8.
     
  2. Toma
    Toma WRInaute discret
    Inscrit:
    18 Janvier 2006
    Messages:
    217
    J'aime reçus:
    0
    Heu... si vous pensez que je fais de la merde, n'hésitez pas à le dire ! Parce que là je comprends vraiment pas pourquoi ça ne détecte pas le 'à' dans le premier cas.

    Je sais aussi que mettre 'à' tout seul entre crochets n'a pas d'intérêt, mais j'ai pris ici l'exemple minimal qui me posait problème.

    Merci.
     
  3. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    salut,
    chez moi :
    Code:
    root@vserver1:/root# locale
    LANG=fr_FR.UTF-8
    LC_CTYPE="fr_FR.UTF-8"
    LC_NUMERIC="fr_FR.UTF-8"
    LC_TIME="fr_FR.UTF-8"
    LC_COLLATE="fr_FR.UTF-8"
    LC_MONETARY="fr_FR.UTF-8"
    LC_MESSAGES="fr_FR.UTF-8"
    LC_PAPER="fr_FR.UTF-8"
    LC_NAME="fr_FR.UTF-8"
    LC_ADDRESS="fr_FR.UTF-8"
    LC_TELEPHONE="fr_FR.UTF-8"
    LC_MEASUREMENT="fr_FR.UTF-8"
    LC_IDENTIFICATION="fr_FR.UTF-8"
    LC_ALL=
    root@vserver1:/root# php
    <?php
    mb_internal_encoding("UTF-8");mb_regex_encoding("UTF-8");
    
    echo mb_ereg_replace('[à]', '#', 'test à'); // test à
    echo mb_ereg_replace('à', '#', 'test à'); // test #
    test #test #root@vserver1:/root#
    
    çà semble fonctionner comme attendu ...

    quand on peut, le plus simple pour gérer l'UTF-8 c'est que tout la chaine soit UTF-8 : serveur -> apache -> source

    a+
     
  4. Toma
    Toma WRInaute discret
    Inscrit:
    18 Janvier 2006
    Messages:
    217
    J'aime reçus:
    0
    Merci beaucoup pour ta réponse Julienr ! Et sympa d'avoir essayé chez toi.

    Ça doit en effet venir du serveur (qui est un mutualisé donc je peux pas y faire grand chose).
    Ça me réconcilie avec les expression rationnelles du coup, je commençais à ne plus avoir la foi en php ! :D

    Encore merci.
     
  5. medium69
    medium69 WRInaute passionné
    Inscrit:
    7 Mai 2005
    Messages:
    1 940
    J'aime reçus:
    3
    Si tu peux ;)

    Met cela dans un fichier de config
    Code:
    setlocale(LC_ALL, 'fr_FR.UTF-8');
    ini_set('mbstring.internal_encoding', 'UTF-8');
    ini_set('mbstring.http_input', 'UTF-8');
    ini_set('mbstring.http_output', 'UTF-8');
    ini_set('mbstring.detect_order', 'auto');
     
  6. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    De rien vraiment :)
    Enfin normalement même si ton mutu est ISO-8859-1, çà devrait fonctionner à partir du moment ou tes sources sont bien UTF-8,
    en effet l'UTF-8 est compatible avec l'ISO mais pas l'inverse.
    Comment édites-tu en UTF-8 et comment transferts-tu ?
    a+
     
  7. Toma
    Toma WRInaute discret
    Inscrit:
    18 Janvier 2006
    Messages:
    217
    J'aime reçus:
    0
    Bon, je suis pas sur d'avoir compris l'histoire du fichier de config. Enfin, j'ai mis les instructions dans mon fichier php, voilà ce que ça donne :

    Code:
    <?php
    mb_internal_encoding("UTF-8");
    mb_regex_encoding("UTF-8");
    setlocale(LC_ALL, 'fr_FR.UTF-8');
    ini_set('mbstring.internal_encoding', 'UTF-8');
    ini_set('mbstring.http_input', 'UTF-8');
    ini_set('mbstring.http_output', 'UTF-8');
    ini_set('mbstring.detect_order', 'auto');
    
    echo mb_ereg_replace('[à]', '#', 'test à');
    echo mb_ereg_replace('à', '#', 'test à');
    ?>
    
    et en sortie j'ai toujours :

    Code:
    test àtest #
    Je ne pense pas que cela vienne de mon éditeur (Gedit) car j'ai toujours utilisé l'UTF-8 et je n'ai jamais eu aucun problème. Je visualise le résultat sur Firefox, avec le bon encodage, pas de soucis de ce coté. Et je transfère depuis toujours avec gFTP, je n'ai jamais eu de problèmes avec UTF-8.

    Par contre, comme cela fonctionne chez vous et que je suis sur un mutualisé chez 1and1, je pense que ça viendrait plutôt de là. La version de php est 4.4.9, le problème ne serait pas ici ?

    C'est pas trop grave non plus, je vais installer php chez moi pour développer mon petit script (en espérant que cela fonctionne). Et comme ça si je veux l'utiliser, je partirai de chez 1and1, ça sera pas une mauvaise chose ! :wink:

    Merci à vous deux.
     
Chargement...
Similar Threads - Mb_ereg_replace utf Forum Date
Convertir page web en UTF-8 Développement d'un site Web ou d'une appli mobile 26 Janvier 2020
Mysql migration utf8->utf8mb4 Développement d'un site Web ou d'une appli mobile 17 Août 2019
Passer des paramètres UTF-8 dans l'URL ! URL Rewriting et .htaccess 5 Mars 2018
Utf8 Développement d'un site Web ou d'une appli mobile 30 Avril 2014
Problème encodage UTF-8 Problèmes de référencement spécifiques à vos sites 4 Octobre 2013
HTML5 convertir page web ISO en UTF-8 Développement d'un site Web ou d'une appli mobile 25 Juillet 2013
Content-type UTF8 , quel éditeur ? Développement d'un site Web ou d'une appli mobile 9 Juillet 2013
Soucis d'encodage apostrophe UTF8 Développement d'un site Web ou d'une appli mobile 10 Octobre 2011
Comment ajouter dans chaque vhost ceci SetOutputFilter DEFLATE Administration d'un site Web 29 Août 2011
[Résolu] Problème d'importation de base MySQL en UTF8 chez 1&1 Administration d'un site Web 3 Juillet 2011
Formulaire de contact en UTF-8 - problème caractères russe Développement d'un site Web ou d'une appli mobile 6 Juin 2011
Encodage utf8 / iso 8859-1 Développement d'un site Web ou d'une appli mobile 28 Février 2011
Problème encodage de mon Blog utf-8 et iso-latin Développement d'un site Web ou d'une appli mobile 13 Février 2011
Internet Explorer et UTF-8 Développement d'un site Web ou d'une appli mobile 9 Janvier 2011
[Netbeans] Problème utf-8 Développement d'un site Web ou d'une appli mobile 7 Janvier 2011
Problème d'affichage de base encodée en utf-8 Développement d'un site Web ou d'une appli mobile 23 Novembre 2010
[RESOLU] Ovh : passage Site à l'UTF8 Développement d'un site Web ou d'une appli mobile 27 Août 2010
Utf8 Iso et iframe Développement d'un site Web ou d'une appli mobile 8 Juillet 2010
Mettre de l'iso-8859-1 sur un page en utf8 Développement d'un site Web ou d'une appli mobile 17 Juin 2010
DTD et <?xml version="1.0" encoding="UTF-8"?> Développement d'un site Web ou d'une appli mobile 22 Mai 2010