web-dev-qa-db-fra.com

Comment afficher XML en HTML en PHP?

J'ai une chaîne avec XML:

$string = 
"
<shoes>
    <shoe>
       <shouename>Shoue</shouename>
    </shoe>
</shoes>
";

Et je voudrais l'afficher sur mon site Web comme ceci:

This is XML string content:
<shoes>
    <shoe>
       <shouename>Shoue</shouename>
    </shoe>
</shoes>

Je voudrais donc le faire:

  • sur le site, pas dans la zone de texte
  • sans bibliothèques externes, frameworks etc.
  • formaté avec de nouvelles lignes appropriées
  • formaté avec des onglets
  • sans couleurs etc., uniquement du texte

Alors, comment le faire de manière claire et simple?

31
Tomasz Smykowski

Si vous voulez juste une représentation en texte brut de votre chaîne (pré-formatée), vous pouvez l'encapsuler dans des balises HTML <pre/> Et utiliser htmlentities pour échapper à l'angle supports:

<?PHP echo '<pre>', htmlentities($string), '</pre>'; ?>
62
Chris

vous pouvez utiliser htmlentities(), htmlspecialchars() ou une fonction similaire.

6
Sinan

Cela devrait fonctionner comme ça:

echo '<p>This is XML string content:</p>'
echo '<pre>';
echo htmlspecialchars($string);
echo '</pre>';
6
justastefan

S'il s'agit d'un objet SimpleXML

<pre>
<?php
echo htmlspecialchars(print_r($obj,true));
?>
</pre>
1
Frank Forte

J'ai cherché une solution pour avoir une sortie légèrement colorée:

$escaped = htmlentities($content);
$formatted = str_replace('&lt;', '<span style="color:blue">&lt;', $escaped);
$formatted = str_replace('&gt;', '&gt;</span>', $formatted);
echo "<pre>$formatted</pre>\n";
1
H.Tries