|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Futur Membre du Club
![]() Inscription : juillet 2004 Messages : 58 ![]() |
Bonjour,
J'ai un script qui fonctionnait bien en PHP4. Je viens de passer en PHP5 et rien ne va plus ! c'est simplement un script qui parse un fichier xml et remonte les infos lues en base. le fichier xml est simple : Code XML :
Depuis que je suis passée en PHP5, les libellés que je récupère sont tronqués. Par exemple pour : <libelle>Billet à ordre à 30 jours le 5</libelle> Je ne récupère que : à ordre à 30 jours le 5 C'est à dire que tout ce qui est avant le 1er caractère accentué est tronqué. Le script qui parse : Code :
C'est vrai que je ne comprends pas grand chose aux parseurs (!) mais je cherche depuis un moment à comprendre et je ne trouve pas. J'ai lu que c'était en effet un problème qui est dû au passage à PHP5, mais je ne comprends pas comment résoudre. Est-ce que je dois utiliser d'autres fonctions ? J'ai trouvé des exemples avec DOM mais je ne comprends pas ces exemples, ça ne semble jamais correspondre (ni de près, ni de loin) à mon cas de figure !! Je ne sais même plus par où je dois commencer pour résoudre mon souci ! Est-ce que quelqu'un peut m'orienter ?? merci d'avance |
||||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Étudiant Inscription : juillet 2006 Messages : 242 ![]() |
Salut !
Dans ton cas l'utilisation de SimpleXML semblerait convenir non ? Est-ce que tu as regardé du côté de SimpleXML ? http://fr2.php.net/manual/fr/ref.simplexml.php Sinon avec xml_parser il faut peut-être modifier les options d'encodage pour qu cela fonctionne. Tu peux le faire avec xml_set_parser_option. Il y a en particulier une option : XML_OPTION_TARGET_ENCODING qui pourrait peut-être résoudre le problème. |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : juillet 2004 Messages : 58 ![]() |
oui j'ai essayé cette syntaxe :
$analyseur_xml = xml_parser_create(""); xml_parser_set_option($analyseur_xml, XML_OPTION_TARGET_ENCODING, "ISO-8859-1"); au lieu de : $analyseur_xml = xml_parser_create("ISO-8859-1"); mais ça ne change rien. La partie avant le 1er accentué est toujours tronqué. je vais suivre ton lien mais je crois y être déjà allé tt à l'heure |
|
|
00
|
|
|
#4 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : août 2004 Messages : 26 ![]() |
Je réponds bien que cela fasse très longtemps que le message ait été posté, mais je viens de passer du temps sur ce problème d'accents avec le XML en PHP5 alors que ça marchait bien en PHP4... la solution aidera peut-être quelqu'un qui tombera sur topic...
Tu déclares ce gestionnaire : xml_set_character_data_handler($analyseur_xml, "gestionnaire_texte"); Le problème vient que ta fonction "gestionnaire_texte" est appelée plusieurs fois pour différentes parties d'une même donnée, depuis PHP5, et ce n'était pas le cas en PHP4. Les appels du parser se passent ainsi : gestionnaire_debut gestionnaire_texte ... gestionnaire_texte gestionnaire_fin donc il faut cumuler les valeurs fournies à "gestionnaire_texte" pour avoir la valeur complète... Dans l'exemple donné, que je reproduis ci-dessous, il faudrait faire quelque chose du genre : Code :
Nyco |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com