首頁 > php教程 > php手册 > PHP DOMDocument保存xml时中文出现乱码

PHP DOMDocument保存xml时中文出现乱码

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-05-26 08:20:14
原創
1709 人瀏覽過

php中DOMDocument对于xml操作我们只要是英文是没有问题了,但如果是中文字体就会有乱码问题了,下面我们就此问题给各位介绍一些解决办法吧.

PHP的DOM内部是utf8机制的,在loadHTML时,是通过检查字符中meta的charset来设置编码的,如果没有charset,就当iso8859进行处理了,而这种情况下进行saveXML时,输出来的却是utf8,所以就看到乱码了.

这么说是不是还不太理解,举个例子:

$xml = new DOMDocument(); 
@$xml->loadHTML(&#39;<div>我就是测试看看 - http://www.phprm.com</div>&#39;); 
$dom = new DOMXPath($xml); 
echo $dom->query(&#39;//div&#39;)->item(0)->saveXML();
登入後複製

打开网页执行,你会发现输出乱码了,那如何解决这个问题呢?有两种方式.

第一种:在loadHTML的时候指定编码,下面这段代码引用自php.net官方文档中的回复,代码如下:

$doc = new DOMDocument(); 
	$doc->loadHTML(&#39;<?xml encoding="UTF-8">&#39; . $html); 
	 
	// dirty fix 
	foreach ($doc->childNodes as $item) 
	    if ($item->nodeType == XML_PI_NODE) 
	        $doc->removeChild($item); // remove hack 
	$doc->encoding = &#39;UTF-8&#39;; // insert proper
登入後複製

第二种方法:通过iconv对输出的字符重新转换,代码如下:

echo iconv("UTF-8", "GB18030//TRANSLIT", $dom->saveXML($n) );
登入後複製


永久地址:

转载随意~请带上教程地址吧^^

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
PHP 8.1中DOMDocument序列化
來自於 1970-01-01 08:00:00
0
0
0
java - springboot新手學習
來自於 1970-01-01 08:00:00
0
0
0
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板