[résolu] SimpleXML et encodage caractères

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par phpmikedu83, 18 Août 2007.

  1. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 012
    J'aime reçus:
    0
    Salut WRI,

    J'ai un soucis pour parser des fichiers XML dont je ne maitrise pas la source (propreté de l'encodage des caractères)...
    S'ils sont bien formés, pas de soucis, mais s'il y a des caractères non UTF8 (ou ISO selon la déclaration), ça plante (Normal)...

    Comment, d'après vous, je peux détecter avant de parser ces caractères foireux et les remplacer par, au pire, un blanc...

    Merci à toutes les brillantes idées qui vont fuser... ;-)
     
  2. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    bienvenue à toi dans le club des 1000, alors c comment là haut :)
    plus sérieusement tu as dû essayer de passer le xml avec un utf8_encode/utf8_decode ?
     
  3. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 012
    J'aime reçus:
    0
    Merci, roff, ça doit pas être mal une mongolfière aussi :lol:

    Sinon, pour revenir à mon problème, c'est que j'ai des caractères comme ça, par exemple:

    Code:
    Et que si j'applique un utf8_encode, je vais avoir les accents qui apparaissent comme ça:

    Code:
    é
    C'est pas le but non plus...

    En fait, je voudrais juste pouvoir virer les caractères pourris...
     
  4. julienr
    julienr WRInaute impliqué
    Inscrit:
    5 Août 2003
    Messages:
    939
    J'aime reçus:
    2
    Code:
    str_replace( '?', ' ', $xml );
    :arrow:

    oui si tu cherches à afficher de l'UTF8 dans une page ISO
    pour moi utf8_encode doit te permettre d'uniformiser tes caractères pour le simpleXml. Ensuite tout ce qui est dans l'objet XML doit passer dans un utf8_decode
     
  5. cloacking
    cloacking WRInaute impliqué
    Inscrit:
    20 Octobre 2004
    Messages:
    589
    J'aime reçus:
    0
    ça fait la même chose sur le Packrefplex, je vais donc essayer cette technique de STR replace en attendant ...
     
  6. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 012
    J'aime reçus:
    0
    au temps pour moi, mon document n'avait pas le bon charset...

    pour autant, s'il existe un moyen de détecter ces caractères bizzaroïdes dans une chaîne, ça m'intéresse ;-)
     
  7. bozoleclown
    bozoleclown WRInaute impliqué
    Inscrit:
    24 Novembre 2005
    Messages:
    693
    J'aime reçus:
    0
  8. cloacking
    cloacking WRInaute impliqué
    Inscrit:
    20 Octobre 2004
    Messages:
    589
    J'aime reçus:
    0
  9. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 012
    J'aime reçus:
    0
    Non, car si je fait un htmlentities, ça rend ma string XML inexploitable...
    Quand au mb_detect_encoding, il n'est d'aucune utilité, car le document contient des erreurs de caractères...

    Ce que j'aimerais, et c'est pas plus mal, c'est détecter avant d'instancier la class que le document va poser problème et traiter l'erreur en ne parsant pas, par exemple...
     
  10. cloacking
    cloacking WRInaute impliqué
    Inscrit:
    20 Octobre 2004
    Messages:
    589
    J'aime reçus:
    0
    Cher voisin varois qui bosse aussi le dimanche :)
    Je pense que mon lien plus haut signifie qu'il n'est en fait pas possible de modifier les ? car php analyse cela par une erreur et remplace automatiquement le caractère qui pose problème par ? :(
     
  11. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 012
    J'aime reçus:
    0
    Ok ok, dommage... mais là ça marche comme ça, tout en gardant les caractères bizzaroïdes qui sont évidemment reproduits par la suite... j'aurais préférer traiter ça comme une erreur avec mon script, mais bon!
     
  12. bozoleclown
    bozoleclown WRInaute impliqué
    Inscrit:
    24 Novembre 2005
    Messages:
    693
    J'aime reçus:
    0
    php n'analyse pas les chaînes de caractères et ne remplacent pas les caractères mal encodés par des "?"

    c'est le navigateur qui n'arrive pas à décoder le caractère et qui met un "?" ou au truc bizarrerie à la place.
    php ne fait qu'envoyer des chaînes de caractères (suite d'octets) au navigateur qui lui interprète ces suites d'octets en fonction du charset déclaré.
     
  13. phpmikedu83
    phpmikedu83 WRInaute passionné
    Inscrit:
    6 Août 2005
    Messages:
    1 012
    J'aime reçus:
    0
    A force d'acharnement, j'ai trouvé comment identifier un mauvais document XML (avec des caractères qui ne correspondent pas charset)

    si:
    Code:
    ereg( chr(195) , utf8_decode($flux) );
    renvoi true, c'est qu'il y a des caractères foireux dans le fichier XML

    ça permet d'intercepter l'erreur et de la traiter... ce qui me ravie :-D
     
Chargement...
Similar Threads - [résolu] SimpleXML encodage Forum Date
Problème images en https (forum phpbb) [résolu] Développement d'un site Web ou d'une appli mobile 18 Novembre 2017
[Résolu] Redirection 301 FR vers EN sur Prestashop uniquement sur outils Google ? Problèmes de référencement spécifiques à vos sites 11 Septembre 2017
[résolu] Passage à HTTPS, comment tester une page ? Développement d'un site Web ou d'une appli mobile 7 Septembre 2017
[Résolu] Redirection d'une famille d'URL URL Rewriting et .htaccess 9 Mars 2017
[Résolu] Diaporama et SEO Débuter en référencement 17 Janvier 2017
[résolu]Redirection monsite.fr/index.html sur monsite.fr et seo URL Rewriting et .htaccess 16 Janvier 2017
[resolu]Publicité facebook lié au compte instagram Facebook 12 Décembre 2016
[résolu] Récupérer des valeurs issues de javascript pour les mettre en base MySQL Développement d'un site Web ou d'une appli mobile 18 Juillet 2016
[résolu] Faire une redirection sauf pour mon adresse IP URL Rewriting et .htaccess 15 Juin 2016
[Résolu] 2 descriptions pour une même url selon requête Crawl et indexation Google, sitemaps 1 Juin 2016
[résolu] Action onchange sur FORM/SELECT qui ne fonctionne qu'à la première action ?!? Développement d'un site Web ou d'une appli mobile 31 Mai 2016
[résolu] Sessions : lire le contenu alors qu'on ne sait pas comment il est nommé... Développement d'un site Web ou d'une appli mobile 25 Mai 2016
[résolu] Avoir un paramètre de session "dynamique" ? Développement d'un site Web ou d'une appli mobile 25 Mai 2016
[résolu] Hauteur de div selon état d'un bouton radio Développement d'un site Web ou d'une appli mobile 23 Mai 2016
[résolu] recupération de flux xml et erreur encodage des caractères Développement d'un site Web ou d'une appli mobile 27 Janvier 2016
[résolu] Carte Google Maps avec "zones de densité" Développement d'un site Web ou d'une appli mobile 5 Novembre 2015
Balise NoIndex ignorée par Google? [résolu] Débuter en référencement 13 Janvier 2015
[Résolu] sites référents sans lien vers mon site Demandes d'avis et de conseils sur vos sites 7 Janvier 2015
Lorsqu'on a créé un site, faut-il mettre un lien vers son site dans le footer ? [Résolu] Débuter en référencement 31 Décembre 2014
[RESOLU] recuperer valeur d'un champ en js Développement d'un site Web ou d'une appli mobile 17 Décembre 2014