DOMDocument가 PHP에서 xml을 저장할 때 한자가 깨지는 문제에 대한 솔루션

高洛峰
풀어 주다: 2023-03-03 22:48:01
원래의
1841명이 탐색했습니다.

PHP의 DOMDocument는 영어라면 xml 연산에는 문제가 없지만, 중국어 폰트라면 문자 깨짐 현상이 발생합니다.

PHP 내부 DOM은 utf8 메커니즘으로, HTML을 로딩할 때 해당 문자에 있는 메타의 charset을 확인하여 인코딩을 설정하는데, charset이 없으면 iso8859로 처리된다. . 그래서 깨진 문자를 보았습니다.

잘 이해되지 않으면 예를 들어

$xml = new DOMDocument();
@$xml->loadHTML(&#39;<div>我就是测试看看</div>&#39;);
$dom = new DOMXPath($xml);
echo $dom->query(&#39;//div&#39;)->item(0)->saveXML();
로그인 후 복사

웹을 엽니다. page 실행하면 출력이 깨져 보이는데, 이 문제를 어떻게 해결해야 할까요? 두 가지 방법이 있습니다.

첫 번째: HTML을 로드할 때 인코딩을 지정합니다. 다음 코드는 공식 php.net 문서의 응답에서 인용됩니다.

$doc = new DOMDocument();
$doc->loadHTML(&#39;<?xml encoding="UTF-8">&#39; . $html);
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 DOMDocument에서 xml 저장 시 한자가 깨져 나오는 문제에 대한 해결 방법입니다. 궁금한 점이 있으면 메시지를 남겨주세요. 편집자가 제때에 답변해 드릴 것입니다. 또한 PHP 중국어 웹사이트를 지원해 주신 모든 분들께 감사드립니다!


DOMDocument가 xml을 저장할 때 중국어 왜곡 문제에 대한 더 많은 PHP 솔루션을 보려면 PHP 중국어 웹사이트에서 관련 기사를 주목하세요!


관련 라벨:
xml
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿