PHPのDOMDocumentは英語であればXML操作に問題はありませんが、中国語フォントの場合、
PHPのDOMは内部的にロード時に文字化けする問題を解決する方法を紹介します。 HTMLでは文字内のメタのcharsetを確認してエンコードを設定しますが、charsetがない場合はiso8859として処理されるため、XML保存を行うと文字化けが発生します。
こんなことを言われてもよくわかりませんね、例えば:
$xml = new DOMDocument(); @$xml->loadHTML('<div>我就是测试看看</div>'); $dom = new DOMXPath($xml); echo $dom->query('//div')->item(0)->saveXML();
Webページを開いて実行すると、出力が文字化けしていることがわかりますが、この問題を解決するにはどうすればよいでしょうか?方法は 2 つあります。
1 つ目の方法: HTML をロードするときにエンコーディングを指定します。 以下のコードは php.net 公式ドキュメントの返信から引用します。 コードは次のとおりです。 : iconv を通して 出力文字を再変換するコードは次のとおりです:
$doc = new DOMDocument(); $doc->loadHTML('<?xml encoding="UTF-8">' . $html); foreach ($doc->childNodes as $item) { if ($item->nodeType == XML_PI_NODE) { $doc->removeChild($item); // remove hack } } $doc->encoding = 'UTF-8'; // insert proper
上記は、DOMDocument が PHP で xml を保存するときに発生する中国語文字化けの問題を解決するためにエディターが紹介する解決策です。ご質問がございましたら、メッセージを残してください。すぐに返信させていただきます。また、PHP 中国語 Web サイトをサポートしていただきありがとうございます。
DOMDocument が xml を保存するときに発生する中国語の文字化けの問題に対する PHP の解決策の詳細については、PHP 中国語 Web サイトの関連記事に注目してください。