PHP xml et apostrophe

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.
<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

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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
  2. Philippe
     
    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
  3. Philippe
     
    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
  4. Philippe
     
    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