
DOMDocument::loadHTML 함수는 HTML 문서를 파싱하는 과정에서 태그의 중복이 발생할 수 있는 문제를 해결하기 위해, 태그의 중복을 허용하지 않도록 설계되어 있습니다.
이러한 문제는 HTML 문서에 동일한 태그가 여러 번 반복되어 있는 경우에 발생합니다. 예를 들어, 다음과 같은 HTML 문서가 있다고 가정해 보겠습니다.
#hostingforum.kr
html
문자열 1
문자열 2
문자열 3
이 HTML 문서를 DOMDocument::loadHTML 함수로 파싱하면, 다음과 같은 구조가 생성됩니다.
#hostingforum.kr
php
$doc = new DOMDocument();
$doc->loadHTML($html);
echo $doc->saveHTML();
이 경우, HTML 문서의 구조는 다음과 같습니다.
#hostingforum.kr
html
문자열 1
문자열 2
문자열 3
하지만, 만약 HTML 문서에 동일한 태그가 여러 번 반복되어 있는 경우, 다음과 같은 HTML 문서가 있다고 가정해 보겠습니다.
#hostingforum.kr
html
문자열 1
문자열 2
문자열 3
문자열 4
이 HTML 문서를 DOMDocument::loadHTML 함수로 파싱하면, 다음과 같은 구조가 생성됩니다.
#hostingforum.kr
php
$doc = new DOMDocument();
$doc->loadHTML($html);
echo $doc->saveHTML();
이 경우, HTML 문서의 구조는 다음과 같습니다.
#hostingforum.kr
html
문자열 1
문자열 2
문자열 3
문자열 4
이 구조에서, 두 번째 div 태그는 첫 번째 div 태그의 자식이 아닌, 두 번째 p 태그의 형제로 생성됩니다.
이러한 문제를 해결하기 위해, DOMDocument::loadHTML 함수를 사용할 때, libxml_use_internal_errors() 함수를 사용하여 내부 오류를 숨기고, libxml_get_errors() 함수를 사용하여 오류를 확인할 수 있습니다.
#hostingforum.kr
php
libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTML($html);
libxml_clear_errors();
또한, HTML 문서의 구조를 수정하기 위해, DOMDocument::saveHTML() 함수를 사용하여 HTML 문서를 다시 생성할 수 있습니다.
#hostingforum.kr
php
$doc = new DOMDocument();
$doc->loadHTML($html);
$doc->formatOutput = true;
echo $doc->saveHTML();
이러한 방법을 사용하여, HTML 문서의 구조를 수정할 수 있습니다.
2025-06-03 08:55