정규식 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
이런식으로 추출하여 리스트화 하고 싶습니다.
조언좀 부탁드립니다.
...
끝이 <<<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 메뉴얼에서 찾아보세요 사용방법이 상세하게 나와있으니깐요
$wr_name, $wr_writer $wr_date 형태를 원하시면 이걸 사용하면 되지 않을까 생각 되는데요..
list($wr_name, $wr_writer $wr_date)=$dat 대충 이런 형식?
list 함수는 php 메뉴얼에서 찾아보세요 사용방법이 상세하게 나와있으니깐요

array 함수에는 foreach 함수가 더 낫을 거라는 판단이 드네요...

헛 친구넷님도 계셨네요 ^^
<?
$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/>";
}
?>
$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/>";
}
?>

감사합니다.