QueryPath HTML 처리 예제

1 개요[ | ]

QueryPath HTML 처리 예제
  • HTML에서 p 태그 중 class=a인 것을 추출하는 예제
  • HTML 처리용 함수인 htmlqp 대신 qp 함수를 사용함
qp 함수는 태그 열기/닫기를 잘 지킨 문서(즉 주로 XML 문서)에 사용하는 것이 좋음
  • QueryPath만으로는 UTF-8 표현이 제대로 되지 않아 qp_decode라는 함수를 만들어 사용했음

2 예제 코드[ | ]

<?php
require '/var/www/phplib/QueryPath2/QueryPath.php';
function xmp_print($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
function qp_decode($str) {
	if(is_array($str)) return array_map('qp_decode', $str);
	$str = utf8_decode($str);
	$str = str_replace("&#13;", "", $str);
	return $str;
}

$html = '<!DOCTYPE html>
<html>
	<head>
		<title>예제</title>
	</head>
	<body>
		<p class="a">다람쥐 헌 쳇바퀴 타고파.</p>
		<p class="a">다람쥐가노래를한다람쥐.</p>
		<p>다람쥐</p>
	</body>
</html>';

$children = qp($html, 'body')->children('p.a');
foreach($children as $child) {
	xmp_print(qp_decode($child->html()));

	echo "<ul>";
	echo "<li>태그: ";
	echo qp_decode($child->tag());
	echo "</li>";
	echo "<li>속성: ";
	print_r(qp_decode($child->attr()));
	echo "</li>";
	echo "<li>내용: ";
	print_r(qp_decode($child->text()));
	echo "</li>";
	echo "</ul>";
}

3 실행 결과[ | ]

<p class="a">다람쥐 헌 쳇바퀴 타고파.</p>
  * 태그: p
  * 속성: Array ( [class] => a )
  * 내용: 다람쥐 헌 쳇바퀴 타고파.
<p class="a">다람쥐가노래를한다람쥐.</p>
  * 태그: p
  * 속성: Array ( [class] => a )
  * 내용: 다람쥐가노래를한다람쥐.

4 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}