이번에 소개할 서포트 함수는 HTML 소스코드에서 특정 태그의 속성값을 배열로 추출할 수 있는 함수다.
보통 이미지 태그에서 src 속성을 추출 하기위해 많이 사용하는 정규식이 있는데 해당 정규식을 조금 커스텀하여
모든 태그의 특정 속성들을 전부 가져올 수 있도록 개선해보았다.
사용방법 및 예제는 아래를 참고하길 바란다.
get_tag_data_all 함수 |
/*
** get_tag_data_all
** 태그에서 특정 속성값을 모두 가져온다.
** 사용
get_tag_data_all("HTML소스",array("태그명"=>array("속성1","속성2") ));
** 리턴
array("태그명"=>array("속성1"=>array('값1','값2'),"속성2"=>array('값1','값2')));
*/
function get_tag_data_all($contents,$option = array()){
if(empty($contents)){ return array(); }
$result = array();
if( !is_array($option)){ $option = array(); }
foreach($option as $tag=>$property){
$result[$tag] = array();
foreach($property as $item){
$result[$tag][$item] = array();
preg_match_all("/<".$tag."[^>]*[\s]".$item."=[\"']?([^>\"']+)[\"']?[^>]*>/i", $contents, $matches);
if( !empty($matches[1])){
$matches[1] = array_filter($matches[1]);
}
$result[$tag][$item] = $matches[1];
}
}
return $result;
}
예제 |
<?php
define('source','<img src="http://blog.redinfo.co.kr/img1.png" data-src="data:http://blog.redinfo.co.kr/img1.png" title="title" data-title="data:title"/><img src="http://blog.redinfo.co.kr/img2.png" data-src="data:http://blog.redinfo.co.kr/img2.png" title="title2" data-title="data:title2"/><br data-info="line22" />
<br data-info="line57" />');
$getItem = array('img'=>array('src','data-src','title','data-title'),'br'=>array('data-info'));
$get = get_tag_data_all(source,$getItem);
echo '<pre>';print_r($get);echo '</pre>';
/*
result:
Array
(
[img] => Array
(
[src] => Array
(
[0] => http://blog.redinfo.co.kr/img1.png
[1] => http://blog.redinfo.co.kr/img2.png
)
[data-src] => Array
(
[0] => data:http://blog.redinfo.co.kr/img1.png
[1] => data:http://blog.redinfo.co.kr/img2.png
)
[title] => Array
(
[0] => title
[1] => title2
)
[data-title] => Array
(
[0] => data:title
[1] => data:title2
)
)
[br] => Array
(
[data-info] => Array
(
[0] => line22
[1] => line57
)
)
)
*/