정규식 preg_match를 이용해서 추출하는것을 하고 싶습니다. > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

정규식 preg_match를 이용해서 추출하는것을 하고 싶습니다. 정보

정규식 preg_match를 이용해서 추출하는것을 하고 싶습니다.

본문

시작을 <<<start>>>로 하여
...
끝이 <<<end>>> 이렇게 되어 있습니다.

이 사이에는 <<<name>>>>,<<<writer>>>,<<<date>>>가 있습니다.
------------------------------------------------------
ex)
$content = "
<<<start>>>
<<<name>>> 테스트를 위한 글
<<<writer>>> 테스트
<<<date>>>  2012-09
<<<end>>>
...
<<<start>>>
<<<name>>> 테스트를 하는 중
<<<writer>>> 테스트
<<<date>>>  2012-08
<<<end>>>";

이런식으로 반복이 됩니다.
반복되는 패턴을 가지고 리스트화 하기 위해서 아래처럼 작성을 해보았습니다.

preg_match_all("/<<<start>>>(.*?)<<<end>>>/", $content, $match);
$dat = $match[1];
for ($i=0; $i<sizeof($dat); $i++){
}

이런식으로 for문을 해보았는데요...
만약 <<<name>>> 뒤에 있는 테스트를 위한 글과 테스트를 하는 중을 추출을 한다면
어찌해야할까요 ?

for문 안에서

$wr_name, $wr_writer $wr_date
이런식으로 추출하여 리스트화 하고 싶습니다.

조언좀 부탁드립니다.

댓글 전체

preg_match_al 사용되면 아마 array 사용될겁니다.

$wr_name, $wr_writer $wr_date  형태를 원하시면 이걸 사용하면 되지 않을까 생각 되는데요..
list($wr_name, $wr_writer $wr_date)=$dat 대충 이런 형식?

list 함수는 php 메뉴얼에서 찾아보세요 사용방법이 상세하게 나와있으니깐요
<?
$content = "
<<<start>>>
<<<name>>> 테스트를 위한 글
<<<writer>>> 테스트
<<<date>>>  2012-09
<<<end>>>
...
<<<start>>>
<<<name>>> 테스트를 하는 중
<<<writer>>> 테스트
<<<date>>>  2012-08
<<<end>>>";
?>
<?
$content = @preg_replace("/\<\<\</", "", $content);
$content = @preg_replace("/\>\>\>/", " ", $content);

preg_match_all("/name(.+\s)(.*?)(.+\s)writer/i", $content, $matchs);  // .+\s 는 위 추출내용 앞에 공백으로 인한 추가

// print_r2($matchs); // 체크용

for($i=0; $i<count($matchs[1]); $i++)  {
$dat[] = trim($matchs[1][$i]);
echo $dat[$i]."<br/>";
}
?>
전체 108 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT