Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php XML DOM将特殊字符转换为&#xYY;_Php_Xml_Hex_Htmlspecialchars - Fatal编程技术网

php XML DOM将特殊字符转换为&#xYY;

php XML DOM将特殊字符转换为&#xYY;,php,xml,hex,htmlspecialchars,Php,Xml,Hex,Htmlspecialchars,我用AJAX POST发送此邮件: <li><ul class "zone zCentral ui-sortable"><li><ul class="region rCol3 ui-sortable"><li class="" style=""><div><span class="tc tc_video">574081</span> <span>video: 'Mundo.Hoy':

我用AJAX POST发送此邮件:

<li><ul class   "zone zCentral ui-sortable"><li><ul class="region rCol3 ui-sortable"><li class="" style=""><div><span class="tc tc_video">574081</span> <span>video: 'Mundo.Hoy': ¿Dónde habré olvidado... mi memoria?</span></div></li></ul></li></ul></li>

我需要XML中的原始字符,这些字符是utf-8有效的,我不知道这种编码的原因:(

最简单的解决方法是在加载XML后设置编码类型:

$dom = new DOMDocument();
$dom->loadXML($data);
$dom->encoding = 'utf-8';

echo $dom->saveXML();                       
exit();
您还可以通过在数据的开头添加XML声明来修复它:

$data = '<?xml version="1.0" encoding="utf-8"?>' . $data;
$dom = new DOMDocument();
$dom->loadXML($data);

echo $dom->saveXML();
exit();
$data='.$data;
$dom=新的DOMDocument();
$dom->loadXML($data);
echo$dom->saveXML();
退出();
我解决了这个问题:

        header('Content-type: text/html; charset=utf-8');       
    if(isset($_POST) && isset($_POST['data']))
    {           
        $data = '<?xml version="1.0" encoding="utf-8"?>';
        $data .= '<ul id="zone_container" class="ui-sortable">';
        $data .= $_POST['data'];
        $data .= '</ul>';                   

        $dom = new DOMDocument('1.0', 'utf-8');
        $dom->loadXML($data);

        echo $dom->saveXML();                       
        exit();
header('Content-type:text/html;charset=utf-8');
如果(isset($_POST)和&isset($_POST['data']))
{           
$data='';
$data.='
    ; $data.=$_POST['data']; $data.='
'; $dom=新的DOMDocument('1.0','utf-8'); $dom->loadXML($data); echo$dom->saveXML(); 退出();
添加:

            $data = '<?xml version="1.0" encoding="utf-8"?>';
$data='';
在开始时将其转换为XML


感谢您的回复:)

DOM将在加载标记时忽略您实例化它的方式,并返回到标记中给出的内容。的可能重复项
$data = '<?xml version="1.0" encoding="utf-8"?>' . $data;
$dom = new DOMDocument();
$dom->loadXML($data);

echo $dom->saveXML();
exit();
        header('Content-type: text/html; charset=utf-8');       
    if(isset($_POST) && isset($_POST['data']))
    {           
        $data = '<?xml version="1.0" encoding="utf-8"?>';
        $data .= '<ul id="zone_container" class="ui-sortable">';
        $data .= $_POST['data'];
        $data .= '</ul>';                   

        $dom = new DOMDocument('1.0', 'utf-8');
        $dom->loadXML($data);

        echo $dom->saveXML();                       
        exit();
            $data = '<?xml version="1.0" encoding="utf-8"?>';