neden libxml2 tırnak javascript ile CDATA'da çift çizgi başlangıç

1 Cevap php

Bu benim kodudur:

<?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>';

Bu sonuç:

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

Ben XML belgesinden DOCTYPE gösterimi kaldırdığınızda ve CDATA düzgün çalışır ve çift eğik çizgi / lider CDATA'da haline değilse.

Burada sorun nedir? Libxml2'nin Bug? PHP version Linux 5.2.13 olduğunu. Teşekkürler.

1 Cevap

Ben OS X üzerinde PHP 5.2.11 ile libxml'e 2.7.3 koşuyorum

Değil bir elma elma karşılaştırma ama belki size yardımcı olacaktır.

Ben kodu çalıştırdığınızda (ve eklemek burada kapanış PHP etiketi benim çıkıştır.)

<?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[
    var a = 123; // JS code
    //]]>
    </script></html>

O bunu istediğiniz gibi doğru işlemek için görünür. Belki sürüm numaraları dışarı sıralamak yardımcı olacaktır ... Ben (Mamp arada ben kendim derlemek vermedi.) PHP5 bir eski bir sürümünü koşuyorum

Bu cevap bulmak için bir yönde işaret yardımcı olur umarım.

Dikkat edin!