
DOMElement::append 메서드는 DOMElement에 자식 요소를 추가할 때 사용됩니다. 하지만 내 경우에는 append 메서드를 사용했을 때, 여러 개의 자식 요소를 추가하는 경우에는 자식 요소들 사이에 공백이 생성되는 것을 확인했습니다.
이러한 문제가 발생하는 이유는 DOMDocument의 loadHTML 메서드가 HTML 문자열을 파싱할 때, 자식 요소들 사이에 공백을 유지하는 방식으로 파싱하기 때문입니다.
이러한 문제를 해결하기 위해서는 DOMDocument의 loadHTML 메서드 대신, DOMDocument의 loadXML 메서드를 사용하거나, 자식 요소들 사이에 공백을 제거하는 메서드를 사용할 수 있습니다.
예를 들어, 다음과 같이 자식 요소들 사이에 공백을 제거하는 메서드를 사용할 수 있습니다.
#hostingforum.kr
php
$div = new DOMDocument();
$div->loadHTML('');
$child1 = $div->createElement('p');
$child2 = $div->createElement('span');
$child3 = $div->createElement('b');
$div->getElementsByTagName('div')[0]->appendChild($child1);
$div->getElementsByTagName('div')[0]->appendChild($child2);
$div->getElementsByTagName('div')[0]->appendChild($child3);
// 자식 요소들 사이에 공백을 제거하는 메서드를 사용합니다.
$div->getElementsByTagName('div')[0]->nodeValue = trim($div->getElementsByTagName('div')[0]->nodeValue);
echo $div->saveHTML();
이러한 코드를 실행하면, `
` 가 생성됩니다.
또한, DOMDocument의 loadXML 메서드를 사용하여 자식 요소들 사이에 공백을 제거할 수 있습니다.
#hostingforum.kr
php
$div = new DOMDocument();
$div->loadXML('');
$child1 = $div->createElement('p');
$child2 = $div->createElement('span');
$child3 = $div->createElement('b');
$div->getElementsByTagName('div')[0]->appendChild($child1);
$div->getElementsByTagName('div')[0]->appendChild($child2);
$div->getElementsByTagName('div')[0]->appendChild($child3);
echo $div->saveXML();
이러한 코드를 실행하면, `
` 가 생성됩니다.
이러한 방법을 사용하여 자식 요소들 사이에 공백을 제거할 수 있습니다.
2025-06-15 19:52