OVH Cloud OVH Cloud

php, SimpleXML et xpath...

2 réponses
Avatar
Thomas LEDUC
Bonjour et bonne année,
Le petit exemple joint activé en ligne de commande (PHP 5.0.4) me pose
problème. La gestion des accents dans le critère de recherche n'est pas
correcte. Auriez-vous une solution ?
Merci d'avance,

<?php
$xml = simplexml_load_string("<?xml version='1.0' encoding='ISO-8859-1'?>
<qcm>
<questionReponses>
<question>ma question</question>
<reponse>ma réponse est vive l'été</reponse> <reponse>je ne sais
pas</reponse>
</questionReponses>
</qcm>
");

# $critere = "je ne sais pas"; # OK, réponse attendue...
$critere = "été"; # problème !
# $critere = "l'été"; # doublement des problèmes !

$critereRecherche = "//qcm/descendant::reponse[contains(.,'$critere')]";
foreach ($xml->xpath($critereRecherche) as $bqr)
$bqr['CLEF'] = "VALEUR";
echo $xml->asXML();
?>

2 réponses

Avatar
Thomas LEDUC
On Thu, 05 Jan 2006 11:52:46 +0000, Thomas LEDUC wrote:

# $critere = "je ne sais pas"; # OK, réponse attendue...
$critere = "été"; # problème !
# $critere = "l'été"; # doublement des problèmes !

$critereRecherche = "//qcm/descendant::reponse[contains(.,'$critere')]";
foreach ($xml->xpath($critereRecherche) as $bqr)
$bqr['CLEF'] = "VALEUR";
echo $xml->asXML();
?>


je me réponds (partiellement) à moi-même afin de "laisser des traces" sur
la toile :

- un "var_dump($xml);" placé immédiatement après le
"simplexml_load_string(...)" m'a permis de comprendre qu'un encodage
UTF8 du contenu de $critere s'impose ! Cela semble d'ailleurs curieux...

- il faut donc écrire :
$critere = utf8_encode("été");
pour que le SimpleXML / xpath fonctionne correctement.

Avatar
xav
La gestion des accents dans le critère de recherche n'est pas
correcte. Auriez-vous une solution ?
Merci d'avance,


Salut,
en effet, simplexml ne digère que de l'UTF-8 , donc il te faut passer
ton critère en utf8 aussi,

dans ton example, tu ajoute simplement un utf8_encode() :

$critere = "été";
$critere = utf8_encode($critere);

et ca fonctionne.

PS: c'est noté dans les commentaires utilisateurs de la page:
http://fr.php.net/manual/fr/ref.simplexml.php


A +
xavier