最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
PHP DOMDocument保存xml时中文出现乱码
时间:2022-06-24 17:06:52 编辑:袖梨 来源:一聚教程网
PHP的DOM内部是utf8机制的。在loadHTML时,是通过检查字符中meta的charset来设置编码的。如果没有charset,就当iso8859进行处理了。而这种情况下进行saveXML时,输出来的却是utf8,所以就看到乱码了。
这么说是不是还不太理解,举个例子:
$xml = new DOMDocument();
@$xml->loadHTML('
$dom = new DOMXPath($xml);
echo $dom->query('//div')->item(0)->saveXML();
打开网页执行,你会发现输出乱码了。那如何解决这个问题呢?有两种方式。
第一种:在loadHTML的时候指定编码,下面这段代码引用自php.net官方文档中的回复
$doc = new DOMDocument();
$doc->loadHTML('' . $html);
// dirty fix
foreach ($doc->childNodes as $item)
if ($item->nodeType == XML_PI_NODE)
$doc->removeChild($item); // remove hack
$doc->encoding = 'UTF-8'; // insert proper
第二种方法,通过iconv对输出的字符重新转换,代码如下:
echo iconv("UTF-8", "GB18030//TRANSLIT", $dom->saveXML($n) );
相关文章
- 无畏契约莲花古城怎么打 源能行动地图攻防技巧 07-01
- ps脖颈纹怎么去除? ps2021改善淡化脖子颈纹的技巧 07-01
- 阴阳师图鉴收集特别签到活动第一弹前瞻介绍 07-01
- 王者荣耀孙权是什么定位 新英雄孙权技能定位解析 07-01
- 推荐:币圈专业名词术语汇总小白入门宝典 07-01
- Aptos创始人加入黑岩集团、高盛,参与制定CFTC加密货币监管框架 07-01