PHP xml et apostrophe

Fermé
Philippe - 31 mars 2010 à 18:18
 Philippe - 31 mars 2010 à 19:51
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.
<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 ?
A voir également:

4 réponses

avion-f16 Messages postés 19252 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 10 février 2025 4 505
Modifié par avion-f16 le 31/03/2010 à 18:21
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.
0
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 php
function 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>'>";
...
0
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
0
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 "";
-1