DOMDocument에 대해 구글링을 하다가 우연히 깃허브를 통해 라이믹스에서도 사용이 가능한 것을 알았습니다.

그래서 한번 써봤는데 얘네는 디버그가 잘 안 잡히네요? 느낌상으로만 그런가...

 

정규표현식만으로 요소를 포착하기 어려울 때 늘 애를 먹곤 했는데 그럴 때 사용하면 좋겠더라구요.

암튼 이런 식으로 사용해봤더니 PHP에서도 html을 자바스크립트처럼 다룰 수 있음을 알 수 있었습니다 :)

 

$dom = new DOMDocument();
libxml_use_internal_errors(true); // 얘를 넣어주면 html5 언어도 인식할 수 있게 해준다고 합니다.
$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); // html 코드가 담겨 있는 $content를 파싱하게 됩니다.
libxml_clear_errors();

foreach ( $dom->getElementsByTagName('div') as $element ) // $content 안에 있는 div 태그들을 찾아서 루프 돌려볼게요.
{
    if ( $element->getAttribute('class') === '클래스명' )
    {
        $result = $dom->saveHTML($element); // 이제 $result에 '클래스명'으로 되어 있는 부분이 담기게 되지요.
        break; // 찾고자 하는 애를 찾았으니 반복문 중지
    }
}

 

사실 이 클래스는 사용해본 적이 별로 없어서 익숙하지는 않은데요.

관련해서 알아야 할 정보가 있으면 알려주세요~ 공부해보겠습니다!

글쓴이 윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • profile

    중간에 다른 자료가 이상한 태그를 넣어놓았거나 템플릿 문법이 남아 있다면 오류가 날 수도 있습니다. 정규식에 비해 상당히 느리기도 하고요. 꼭 필요하지 않다면 $content 전체를 집어넣기보다는 다른 방법으로 관심있는 부분을 일단 추출한 후, 그것만 넣어서 사용하시는 것을 추천합니다.

  • profile profile
    어떤 말씀인지 알겠습니다.
    코어에서도 입력값 필터링할 때 주로 사용되는 이유가 그것이었군요.
    div 안팎으로 여러 div가 있다거나 할 때 정규표현식으로 요소를 포착하기 어려워서 찾아본 거였는데, 말씀하신대로 렌더링 문제랑 속도 문제도 있으니 제한적으로만 사용을 해야겠습니다.