PHP의 DOMDocument는 영어라면 xml 연산에는 문제가 없지만, 중국어 폰트라면 문자 깨짐 현상이 발생합니다.
PHP 내부 DOM은 utf8 메커니즘으로, HTML을 로딩할 때 해당 문자에 있는 메타의 charset을 확인하여 인코딩을 설정하는데, charset이 없으면 iso8859로 처리된다. . 그래서 깨진 문자를 보았습니다.
잘 이해되지 않으면 예를 들어
$xml = new DOMDocument(); @$xml->loadHTML('<div>我就是测试看看</div>'); $dom = new DOMXPath($xml); echo $dom->query('//div')->item(0)->saveXML();
웹을 엽니다. page 실행하면 출력이 깨져 보이는데, 이 문제를 어떻게 해결해야 할까요? 두 가지 방법이 있습니다.
첫 번째: HTML을 로드할 때 인코딩을 지정합니다. 다음 코드는 공식 php.net 문서의 응답에서 인용됩니다.
$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
두 번째 방법: iconv를 통해 출력 문자를 다시 변환합니다. 코드는 다음과 같습니다.
echo iconv("UTF-8", "GB18030//TRANSLIT", $dom->saveXML($n) );
위 내용은 에디터가 소개한 PHP DOMDocument에서 xml 저장 시 한자가 깨져 나오는 문제에 대한 해결 방법입니다. 궁금한 점이 있으면 메시지를 남겨주세요. 편집자가 제때에 답변해 드릴 것입니다. 또한 PHP 중국어 웹사이트를 지원해 주신 모든 분들께 감사드립니다!
DOMDocument가 xml을 저장할 때 중국어 왜곡 문제에 대한 더 많은 PHP 솔루션을 보려면 PHP 중국어 웹사이트에서 관련 기사를 주목하세요!