2013-03-14 3 views
0

예를 들어 preg_match_all()과 일치하는 항목을 모두 얻고 그 결과를 빈 문자열로 바꿀 수 있습니까?정규식으로 일치 항목 바꾸기 및 추출

<?php 
$comments = array();    

$selectors = preg_replace_callback('~\*(?>(?:(?>([^*]+))|\*(?!\/))*)\*~', 
function ($match) { 
    $comments[] = $match[0]; 
    return ''; 
}, $input); 
?> 

을하지만 $ 주석 변수는 익명 함수에서으로 접근 할 수하지 않는 것 때문에 그것은 매우 잘 작동하지 않습니다

나는이 같은 물건을 시도했습니다. 은 내가 전역 변수를 만들 수 있습니다 생각,하지만 난 정말 그

+0

은 왜 그냥 preg_replace이다를 사용할 수 있습니까? – VladL

+0

그 때문에 나는 모든 일치 항목을 가져 오거나 추출 할 수 없기 때문에 (대체되었습니다). 아니면 가능한가? – MichaelBS

+0

함수 선언에서'use'를 시도하십시오 : http://www.php.net/manual/en/functions.anonymous.php – user1950929

답변

0

같은 네임 스페이스가이 일을해야 엉망으로하지 않습니다

<?php 
$comments = array();    

$selectors = preg_replace_callback('~\*(?>(?:(?>([^*]+))|\*(?!\/))*)\*~', 
function ($match) use (&$comments) { //add the variable $comments to the function scope 
    $comments[] = $match[0]; 
    return ''; 
}, $input); 
?>