>백엔드 개발 >PHP 튜토리얼 >내 PHP DOMDocument::loadHTML()이 UTF-8을 올바르게 처리하지 못하는 이유는 무엇입니까?

내 PHP DOMDocument::loadHTML()이 UTF-8을 올바르게 처리하지 못하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-25 12:12:14886검색

Why is my PHP DOMDocument::loadHTML() not handling UTF-8 correctly?

PHP DOMDocument loadHTML이 UTF-8을 올바르게 인코딩하지 않음

문제:

HTML을 구문 분석할 때 PHP의 DOMDocument::loadHTML(), UTF-8 사용 문자가 올바르게 해석되지 않아 왜곡된 출력이 발생합니다.

원인:

DOMDocument는 입력 문자열이 기본적으로 ISO-8859-1 인코딩으로 가정합니다. 그러나 UTF-8은 HTML5에서 일반적으로 사용됩니다. 인코딩을 지정하지 않고 UTF-8 문자열을 로드하면 DOMDocument가 해당 문자열을 잘못 해석합니다.

해결책:

이 문제를 해결하려면 입력에 대한 올바른 인코딩을 지정해야 합니다. 끈. 여러 가지 옵션이 있습니다.

  • XML 인코딩 선언 앞에 추가:
  • 메타 문자 집합 선언 사용: 태그를
  • SmartDOMDocument 라이브러리 사용: 이 라이브러리는 문자열을 DOMDocument에 로드하기 전에 HTML 엔터티로 변환하여 문제를 해결합니다.
  • mb_encode_numericentity() 함수를 사용하세요. 이 함수는 UTF-8 문자를 HTML 엔터티로 변환합니다. 그러면 DOMDocument가 올바르게 구문 분석할 수 있습니다.

예:

이 코드는 mb_encode_numericentity() 함수 사용을 보여줍니다.

$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に</p>';
$dom = new DOMDocument();
$dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
echo $dom->saveHTML();

이러한 기술을 사용하면 UTF-8 문자가 올바르게 구문 분석되고 표시되는지 확인할 수 있습니다. PHP DOMDocument에 있습니다.

위 내용은 내 PHP DOMDocument::loadHTML()이 UTF-8을 올바르게 처리하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.