2
Ceci est mon code:pourquoi citations libxml2 à partir double barre oblique en CDATA avec javascript
<?php
$data = <<<EOL
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<script type="text/javascript">
//<![CDATA[
var a = 123; // JS code
//]]>
</script>
</html>
EOL;
$dom = new DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->formatOutput = false;
$dom->loadXml($data);
echo '<pre>' . htmlspecialchars($dom->saveXML()) . '</pre>';
C'est le résultat:
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script type="text/javascript"><![CDATA[
//]]><![CDATA[
var a = 123; // JS code
//]]><![CDATA[
]]></script></html>
Si et lorsque je retire la notation DOCTYPE
du document XML, œuvres CDATA La double barre oblique proprement et avant/arrière n'est pas transformée en CDATA.
Quel est le problème ici? Bug dans libxml2? La version de PHP est 5.2.13 sur Linux. Merci.
libxml2 2.6.32, PHP 5.3.0, Ubuntu 9.04, je vois la bonne sortie. J'ai vérifié la base de données de bogues pour libxml2 et n'ai trouvé aucun bogue correspondant à cette description. Vous pouvez le vérifier vous-même et, si nécessaire, soumettre un rapport de bogue. Vous devez d'abord vérifier qu'il s'agit bien de la faute de libxml2. Ne pas exclure que c'est quelque chose avec PHP. – erisco
Impossible de reproduire sur PHP 5.3/libxml 2.7.7 –
Est-il possible que le saut de ligne entre le
Vous devriez utiliser la version HTML de l'API.
Utilisez à la place
loadHTML
etsaveHTML
.Source
2013-01-01 08:27:22