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

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

Barbara Streisand
Barbara Streisand원래의
2024-12-28 00:43:10172검색

Why is my PHP DOMDocument::loadHTML() Not Handling UTF-8 Encoding Correctly?

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

DOMDocument::loadHTML()을 사용하여 HTML을 구문 분석하려고 할 때 문제가 발생할 수 있습니다. 적절한 UTF-8 인코딩을 사용하세요. 기본적으로 DOMDocument는 입력 문자열을 ISO-8859-1로 처리하므로 UTF-8 데이터를 처리할 때 오류가 발생할 수 있습니다.

해결책:

올바른지 확인하려면 인코딩을 사용하면 다양한 방법을 사용할 수 있습니다. 방법:

  • 인코딩 선언 앞에 추가: XML 인코딩 선언 또는 HTML 메타 문자 집합 선언을 추가하여 UTF-8 문자가 있음을 나타냅니다.

    $contentType = '<meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;>';
    $dom->loadHTML($contentType . $profile);
  • 사용 SmartDOMDocument: 입력 HTML에 이미 선언이 포함된 경우 SmartDOMDocument 라이브러리를 사용하여 잠재적인 충돌을 해결하십시오.

    $dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));
  • 대안: PHP 8.2 , 보다 안전한 인코딩을 위해 mb_encode_numericentity()를 사용하세요 옵션:

    $dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));

HTML5 고려 사항:

DOMDocument는 HTML4 파서를 사용합니다. HTML5 문서의 경우 HTML5 호환을 위해 설계된 대체 HTML 파서를 사용하는 것이 좋습니다.

예:

다음 코드는 잘못된 UTF-8을 수정하기 위해 mb_convert_encoding()을 사용하는 방법을 보여줍니다. 인코딩:

$profile = "

イリノイ州シカゴにて、アイルランド系の家庭に、9人兄弟の5番目として

"; $dom = new DOMDocument(); $dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8')); echo $dom->saveHTML();

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

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