PHP에서 HTML tag 사이의 문자 가져오기

PHP 로 페이지를 크롤링한 후 HTML tag 안의 데이터가 필요할 때 함수 하나로 해결할 수 있다.

소스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
/**
* [splitBetweenStr 텍스트 사이의 문자열을 배열로 반환]
* @param [string] $str [전체 문자열]
* @param [string] $startWord [찾을 시작 문자열]
* @param [string] $endWord [찾을 종료 문자열]
* @return [array] [텍스트 사이의 문자열 배열]
*
* ex) splitBetweenStr('<br>hi</br><b>test</b><br>graceful_light</br>', '<br>', '</br>')
* => ['hi', 'graceful_light']
*/
function splitBetweenStr($str, $startWord, $endWord) {
for ($i=0, $len=strlen($str); $i<$len; $i++) {
$target = substr($str,$i);
$prevStartIdx = strpos($target, $startWord);
$startIdx = $prevStartIdx + strlen($startWord);
$endIdx = strpos(substr($target, $startIdx), $endWord);

if ($prevStartIdx===false || $endIdx===false) {
break;
} else {
$betweenStrings[] = substr($target, $startIdx, $endIdx);
$i += $startIdx + $endIdx + strlen($endWord) - 1;
}
}

return $betweenStrings;
}

여담

물론 다른 크롤러 라이브러리를 사용하는게 속편하다.
호스팅 환경에서는 유용하게 사용할 수 있다.