PHP DOMDocument가 UTF-8 인코딩과 씨름합니다(☆)
UTF-8 문자를 처리하는 PHP의 DOMDocument에 문제가 있습니까? 웹 서버, 파일 및 설정이 UTF-8로 구성되었을 수 있지만 DOMDocument에는 여전히 문제가 있습니다. 우리는 문제를 조사하고 적절한 UTF-8 해석을 보장하기 위한 솔루션을 제공할 것입니다.
문제의 근본:
DOMDocument::loadHTML()에는 HTML이 필요합니다. 일반적으로 HTML 사양에 따라 ISO-8859-1로 인코딩된 문자열입니다. 그러나 귀하와 같은 UTF-8로 인코딩된 문자열은 이러한 기대와 호환되지 않습니다.
해결책 1: HTML 엔터티로 변환
이 비호환성을 해결하려면 유니코드 값 127(h7F)을 초과하는 모든 문자를 HTML 엔터티로 변환합니다. HTML-ENTITIES 대상 인코딩을 사용하는 mb_convert_encoding 함수를 사용하면 이 작업을 수행할 수 있습니다.
<code class="php">$us_ascii = mb_convert_encoding($utf_8, 'HTML-ENTITIES', 'UTF-8');</code>
해결책 2: HTML 메타 태그 추가
또는 를 추가하여 인코딩합니다. 문자 집합을 지정하는 태그:
<code class="php">$dom = new DomDocument(); $dom->loadHTML('<meta http-equiv="content-type" content="text/html; charset=utf-8">'.$html);</code>
이 태그는 자동으로
섹션에서 HTML 2.0 사양을 따릅니다.정확한 인코딩 보장
마지막으로 입력 문자열이 실제로 UTF-8로 인코딩되었는지 확인하세요. 일부 입력에는 혼합 인코딩이 있어 변환 프로세스가 복잡해질 수 있습니다. 필요에 따라 정규식을 사용하여 대상 문자열 교체를 수행합니다.
위 내용은 PHP의 DOMDocument가 UTF-8 문자를 처리하는 데 문제가 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!