php XML DOM将特殊字符转换为&#xYY; [英] php XML DOM translates special chars to &#xYY;

查看:153
本文介绍了php XML DOM将特殊字符转换为&#xYY;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用AJAX POST发送这个消息:

 < li>< ul classzone zCentral ui-sortable> ;< li>< ul class =region rCol3 ui-sortable>< li class =style =>< div>< span class =tc tc_video> 574081<跨度> < span> video:'Mundo.Hoy':¿Dóndehabréolvidado ... mi memoria?< / span>< / div>< / li>< / ul>< / li>< UL>< /锂> 

我这样做来创建XML:

  header('Content-type:text / html; charset = utf-8'); 
if(isset($ _ POST)&& isset($ _ POST ['data']))
{
$ data ='< ul id =zone_containerclass = UI可排序>';
$ data。= $ _POST ['data'];
$ data。='< / ul>';

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

echo $ dom-> saveXML();
exit();
}

我得到这个:

 <?xml version =1.0?> 
< ul id =zone_containerclass =ui-sortable>
< 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':&#xBF; D&#xF3; nde habr&#xE9; olvidado ... mi memoria?< / span>< / div> < /立GT;< / UL>< /立GT;< / UL>< /立GT;< / UL> b



$ b

¿ b

转换为:

 &#xBF; D&#xF3; nde habr&#xE9; olvidado ... mi memoria? 

我需要XML中的原始字符,这些都是utf-8有效的,我不知道这种编码的原因:解决方案最简单的方法是在之后设置编码类型 >你已经加载了XML:

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

echo $ dom-> saveXML();
exit();

您也可以通过在数据的开头添加XML声明来修复它:

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

echo $ dom-> saveXML();
exit();


I send this with 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>

I do this to create XML:

        header('Content-type: text/html; charset=utf-8');       
    if(isset($_POST) && isset($_POST['data']))
    {           
        $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();
    }

and i get this:

<?xml version="1.0"?>
<ul id="zone_container" class="ui-sortable">
    <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': &#xBF;D&#xF3;nde habr&#xE9; olvidado... mi memoria?</span></div>    </li></ul></li></ul></li></ul>

¿Dónde habré olvidado... mi memoria?

translates to:

&#xBF;D&#xF3;nde habr&#xE9 ; olvidado... mi memoria?

I need original chars in the XML, these are utf-8 valid and i don't know the reason for this encode :(

解决方案

The easiest way to fix this is to set the encoding type after you have loaded the XML:

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

echo $dom->saveXML();                       
exit();

You can also fix it by putting an XML declaration at the beginning of your data:

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

echo $dom->saveXML();
exit();

这篇关于php XML DOM将特殊字符转换为&amp;#xYY;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆