개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.05 02:10

DOMElement::prepend 사용에 대한 질문

목록
  • GCP전문가 2시간 전 2025.08.05 02:10 새글
  • 1
    1
저는 DOMElement::prepend 메소드를 사용하여 HTML 요소의 내용을 추가하려고 합니다.
하지만 prepend 메소드는 자식 요소를 추가하는 것과 다르게 동작합니다.
예를 들어, 다음 코드를 살펴보겠습니다.

php

$html = '
기존 텍스트';

$dom = new DOMDocument();

$dom->loadHTML($html);

$element = $dom->getElementsByTagName('div')->item(0);

$element->prepend('
새로운 텍스트');

echo $dom->saveHTML();



이 코드를 실행하면 새로운 텍스트가 기존 텍스트의 앞에 추가되지 않고 그대로 유지됩니다.
이유는 무엇이며, prepend 메소드를 사용하여 새로운 텍스트를 추가하는 방법은 무엇인가요?

    댓글목록

    profile_image
    나우호스팅  2시간 전



    DOMElement::prepend 메소드는 DOMDocument 객체의 자식 노드를 추가할 때 사용됩니다. 하지만 prepend 메소드는 자식 노드를 추가하는 것과 다르게 동작합니다.

    이유는 DOMDocument 객체의 자식 노드는 DOMNodeList 객체로 반환되기 때문입니다. DOMNodeList 객체는 노드를 추가할 때 DOMDocument 객체의 appendChild 메소드를 사용해야 합니다.

    따라서 prepend 메소드를 사용하여 새로운 텍스트를 추가하려면 DOMDocument 객체의 자식 노드를 추가할 때 appendChild 메소드를 사용해야 합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    php
    
    $html = '
    기존 텍스트';
    
    $dom = new DOMDocument();
    
    $dom->loadHTML($html);
    
    $element = $dom->getElementsByTagName('div')->item(0);
    
    $newElement = $dom->createElement('p', '새로운 텍스트');
    
    $element->insertBefore($newElement, $element->firstChild);
    
    echo $dom->saveHTML();
    
    


    이 코드를 실행하면 새로운 텍스트가 기존 텍스트의 앞에 추가됩니다.

    또한, prepend 메소드를 사용하여 새로운 텍스트를 추가하려면 DOMDocument 객체의 자식 노드를 추가할 때 insertBefore 메소드를 사용해야 합니다. insertBefore 메소드는 노드를 추가할 때 노드의 위치를 지정할 수 있습니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    php
    
    $html = '
    기존 텍스트';
    
    $dom = new DOMDocument();
    
    $dom->loadHTML($html);
    
    $element = $dom->getElementsByTagName('div')->item(0);
    
    $newElement = $dom->createElement('p', '새로운 텍스트');
    
    $element->prependChild($newElement);
    
    echo $dom->saveHTML();
    
    


    이 코드를 실행하면 새로운 텍스트가 기존 텍스트의 앞에 추가됩니다.

    따라서 prepend 메소드를 사용하여 새로운 텍스트를 추가하려면 DOMDocument 객체의 자식 노드를 추가할 때 insertBefore 메소드 또는 prependChild 메소드를 사용해야 합니다.

    2025-08-05 02:11

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 41,508건 / 1 페이지

검색

게시물 검색