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 :

problème str_replace, eregi très bizarre


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Points : 17
    Points
    17
    Par défaut problème str_replace, eregi très bizarre
    Bonjour,

    Après deux jours de bataille, de tests divers et variés, je vous expose mon soucis et problème.

    je dispose d'une petite fonction de formatage de chaines de caractères du genre, si tu trouve un espace => transformation en '-', si tu trouve un accent => transformation en caractère non accentué.
    Simple et facile à la fois, elle me permet entre autre de coder des urls placées dans des balises href.

    Là où ça se corse c'est qu'avec deux pages quasi identiques les résultats sont différents : Même données recueillies de la même base, même traitement ( aucune différence de fonctions), et pourtant une première page reconnait les caractères 'è' et 'ê', et... pas l'autre ! même charset !
    Mon traitement ne me permet alors pas de disposer de la chaîne telle que je souhaiterai l'utiliser.
    Le but est tout bête je dois coder une chaîne type 'élève d'entreprise' en eleve-d-entreprise.htm
    première page ok,
    seconde page => el%C3%A8-d-entreprise.htm !

    La première page est une page contenant fonction traitement et affichage.
    La seconde est une page includée dans une autre qui contient elle aussi les fonctions.

    // tests effectués sur la page source d'erreur :
    on vire l'include, exécution du code de la page => erreur => page mère non incriminable
    on vire les fonctions et include de celles ci => erreur => fonctions includés pas en cause.
    affichage en mode débug =>'élève' pas de é et de è ! mais si je recherche via ereg, mb_eregi,... le caractère 'è', celui ci est absent car il est interprété par pHP comme un 'e', le 'é' lui est bien interprété !

    auriez-vous une suggestion ???? parce qu'à mon taf là, on sèche !
    merci

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    Va falloir réduire ton code au minimum et nous en montrer un peu, sinon ça va être dur de te dire ce qui cloche.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    pour faire simple :
    un simple echo de 'ÁÂÀÄÅÃáâàäåãÉÊÈËéêèëÓÔÒÖÕóôòöõÍÎÌÏíîìïÚÛÙÜúûùüÇçÝýÑñ'
    => me renvoi dans la page erronée
    'ÁÂAÄAAáâaäaaÉEEËéeeëÓÔOÖOóôoöoÍÎIIíîiiÚUUÜúuuüÇçÝýNn'

    c'est tout de même bizarre ça !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Réduire en deçà de 850 ligne c'est pas poss...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par Ronin Voir le message
    pour faire simple :
    un simple echo de 'ÁÂÀÄÅÃáâàäåãÉÊÈËéêèëÓÔÒÖÕóôòöõÍÎÌÏíîìïÚÛÙÜúûùüÇçÝýÑñ'
    => me renvoi dans la page erronée
    'ÁÂAÄAAáâaäaaÉEEËéeeëÓÔOÖOóôoöoÍÎIIíîiiÚUUÜúuuüÇçÝýNn'

    c'est tout de même bizarre ça !
    Le fichier qui contient cette ligne est bien en UTF-8 ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    En UTF-8 :

    Le echo donne ceci :
    ��A�AA��a�aa�EE��ee���O�O��o�o��II��ii�UU��uu�����Nn

    En ISO 8859-1
    Le echo donne ceci :
    ÁÂAÄAAáâaäaaÉEEËéeeëÓÔOÖOóôoöoÍÎIIíîiiÚUUÜúuuüÇçÝýNn


  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par Ronin Voir le message
    En UTF-8 :

    Le echo donne ceci :
    ��A�AA��a�aa�EE��ee���O�O��o�o��II��ii�UU��uu�����Nn

    En ISO 8859-1
    Le echo donne ceci :
    ÁÂAÄAAáâaäaaÉEEËéeeëÓÔOÖOóôoöoÍÎIIíîiiÚUUÜúuuüÇçÝýNn

    On parle bien de l'encodage de ton fichier source là ? Pas de l'encoding PHP ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Concernant l'Encoding PHP j'ai testé avec charset utf8, iso et sans => dans les 3 cas j'ai le soucis sur le fichier PHP !
    Concernant le container, le charset est en ISO.

    J'ai du mal à cerner pour quelle raison charset ou rien, le résultat s'avère identique : pas d'accents grave et circonflexe dans cette page PHP ?
    Alors que comme indiqué ces caractères s'affichent correctement sur l'autre fichier PHP.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 144
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par Ronin Voir le message
    Concernant l'Encoding PHP j'ai testé avec charset utf8, iso et sans => dans les 3 cas j'ai le soucis sur le fichier PHP !
    Concernant le container, le charset est en ISO.

    J'ai du mal à cerner pour quelle raison charset ou rien, le résultat s'avère identique : pas d'accents grave et circonflexe dans cette page PHP ?
    Alors que comme indiqué ces caractères s'affichent correctement sur l'autre fichier PHP.
    Je suis pas sûr qu'on se comprenne en fait. C'est quoi le "container" ?

    Quel éditeur utilises-tu pour coder ? Lui as-tu bien spécifié "UTF8" pour le format du .PHP qui contient ce code ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Le container est la page mère contenant le fichier php en include, bon jusque là c'est du grand classique, elle est codée en iso-8859-1
    Mon fichier php lui est en utf8, je viens de le tester.

    "Le gros caca vient de dreamweaver CS3 qui m'a pseudo traduit de l'utf8 en ASCII version trouvé sur le net" !!!
    Je viens de vérifier corriger mon fichier sous ultra edit et là caguade !!
    du chinois partout et des interprétation un peu tordues du code.
    Si la base n'est plus bonne...

    Le fameux echo donne : 'ÃÂÀÄÅÃáâà äåãÉÊÈËéêèëÓÔÒÖÕóôòöõÃÃŽÃŒÃÃ*îìïÚÛÙÜúûùüÇçÃýÑñ'.

    Bizarrement les é, è, ... s'affichent bien mais ne se traitent pas pour autant
    je veux dire les datas présente bien des caractères é, è... et s'affichent bien comme tels mais lorsque je tente un eregi ou str_replac, ça ne traite que les é, pas les è !!

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    et oui aussi.

    En résumé : le code est en utf8 !

    la chaine pour être correctement présentée en echo doit s'affubler d'un utf8_decode('blablablablablablabla')

    les fonctions doivent elles aussi convertir en iso la chaine recherchée par chaine a remplacer donc là encore utf8_decode

    Ce qui nous donne
    $original = utf8_decode("ÁÂÀÄÅÃáâàäåãÉÊÈËéêèëÓÔÒÖÕóôòöõÍÎÌÏíîìïÚÛÙÜúûùüÇçÝýÑñ");
    $copie = "AAAAAAaaaaaaEEEEeeeeOOOOOoooooIIIIiiiiUUUUuuuuCcYyNn";

    ensuite c'est là que ça devient comique : enregistrer le fichier à includer en d'UTF8 en ASCII !! et là ça fonctionne de manière autonome et en include
    --
    des fois il vaut rester coucher ou encore se mettre la tête dans le sac !
    en tous cas Merci pour votre écoute(je crois que celle là ja vais la garder dans les anales)

Discussions similaires

  1. Problème d'impression très bizarre (pour le moment)
    Par over_score dans le forum AS/400
    Réponses: 0
    Dernier message: 24/10/2012, 17h37
  2. Problème très bizarre
    Par Gaetch dans le forum WinDev
    Réponses: 2
    Dernier message: 28/10/2008, 13h55
  3. [gcc] problème d'exécution très bizarre
    Par Anouschka dans le forum C
    Réponses: 10
    Dernier message: 14/06/2006, 12h29
  4. Problème très bizarre avec COUNT
    Par Nomade95000 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/10/2005, 15h12
  5. Réponses: 4
    Dernier message: 28/09/2002, 01h00

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