PHP DOMDocument loadHTML이 UTF-8을 올바르게 인코딩하지 않음
DOMDocument::loadHTML()을 사용하여 HTML을 구문 분석하려고 할 때 문제가 발생할 수 있습니다. 적절한 UTF-8 인코딩을 사용하세요. 기본적으로 DOMDocument는 입력 문자열을 ISO-8859-1로 처리하므로 UTF-8 데이터를 처리할 때 오류가 발생할 수 있습니다.
해결책:
올바른지 확인하려면 인코딩을 사용하면 다양한 방법을 사용할 수 있습니다. 방법:
인코딩 선언 앞에 추가: XML 인코딩 선언 또는 HTML 메타 문자 집합 선언을 추가하여 UTF-8 문자가 있음을 나타냅니다.
$contentType = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'; $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 = ""; $dom = new DOMDocument(); $dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8')); echo $dom->saveHTML();イリノイ州シカゴにて、アイルランド系の家庭に、9人兄弟の5番目として
위 내용은 내 PHP DOMDocument::loadHTML()이 UTF-8 인코딩을 올바르게 처리하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!