PHP xml et apostrophe
Philippe
-
Philippe -
Philippe -
Bonjour,
j'ai un problème étrange (ou pas?)
j'ai créé un fichier xml manuellement dedans j'ai mis des valeurs avec des apostrophes, accents, etc.
je viens lire ce fichier avec du php.
j'arrive a récupérer correctement les données mais je bloque sur une balise contenant un apostrophe.
le php m'affiche
noël de l'
j'ai essayé utf8_decode, htmlspecialchars rien ne change.
qu'est ce qu'y bloque ?
j'ai un problème étrange (ou pas?)
j'ai créé un fichier xml manuellement dedans j'ai mis des valeurs avec des apostrophes, accents, etc.
je viens lire ce fichier avec du php.
j'arrive a récupérer correctement les données mais je bloque sur une balise contenant un apostrophe.
<subtitle>noël de l'an</subtitle>
le php m'affiche
noël de l'
j'ai essayé utf8_decode, htmlspecialchars rien ne change.
qu'est ce qu'y bloque ?
4 réponses
-
Pourrait-on voir ton script ainsi que le XML (au minimum sa structure) ?
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire. -
le fichier xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <videos> <video nameFich="video_01" vignette="video_01.jpg"> <fr> <title>un titre</title> <subtitle>noël de l'an</subtitle> <description> <![CDATA[ une description ]]> </description> </fr> </video> </videos>
le code phpfunction lireXMLInfosVideo($fichier) { $tabInfosVideo = array("title" => "", "subtitle" => "", "description" => ""); if (file_exists($fichier)) { $xml = simplexml_load_file($fichier); $tabInfosVideo["title"] = $xml->video->$_SESSION["lang"]->title; $tabInfosVideo["subtitle"] = $xml->video->$_SESSION["lang"]->subtitle; $tabInfosVideo["description"] = $xml->video->$_SESSION["lang"]->description; return $tabInfosVideo; } }
l'affichage... $tabVideo = lireXMLInfosVideo('videos/'.$videos[0].'.xml'); echo "<a rel='shadowbox[videos];width=640;height=504;title=".$tabVideo["title"]." | ".$tabVideo["subtitle"].";' href='#player-".$compteurVideos."' alt='<p>".$tabVideo["description"]."</p>'>"; ... -
en reprenant apres une pause je viens de m'apercevoir que cela bloque lors de mon affichage.
echo "<a rel='shadowbox[videos];width=640;height=504;title=".$tabVideo["title"]." | ".$tabVideo["subtitle"].";' href='#player-".$compteurVideos."' alt='<p>".$tabVideo["description"]."</p>'>";
le php a bien recupéré la chaine entiere mais lorsqu'il l'affiche il cloture prematurement ma balise html a -
j'ai trouvé une solution mais je la trouve bancale ...
j'ai interverti mes guillements et mes apostrophes dans mon affichage et rajouté htmlspecialchars()
avant:echo "<a rel='shadowbox[videos];width=640;height=504;title=".$tabVideo["title"]." | ".$tabVideo["subtitle"].";' href='#player-".$compteurVideos."' alt='<p>".$tabVideo["description"]."</p>'>";
apres:echo '<a rel="shadowbox[videos];width=640;height=504;title='.$tabVideo["title"].' | '.htmlspecialchars($tabVideo["subtitle"]).' ;" href="#swf-player-'.$compteurVideos.'" alt="<p>'.$tabVideo["description"].'</p>">';
du coup je vais tout inverser et mettre htmlspecialchars() partout.
il me semblait pourtant que pour un echo on pouvait mettre des guillemets ou apostrophes indifferement.
e.g: echo ""; ou echo '';
existe t-il une autre astuce ? pour permettre un echo "";