2010-06-09 3 views
0

안녕 내가 가지고있는 그들도 혼란 같은 코드 있지만 메신저 인식 불가 특급의 큰 재미 다음 이유가PHP Preg_replace_callback 문제

<?php 
$r = '|\\*(.+)\\*|'; 
$w = ''; 
$s = 'hello world *copyMe* here'; 
function callbk($str){ 
    print_r($str); 
    foreach($str as $k=>$v) { 
     echo $v; 
    } 
} 
$t = preg_replace_callback($r,'callbk',$s); 

//output: Array ([0] => *copyMe* [1] => copyMe) *copyMe*copyMe 


?> 

내 질문에 모두 "* copyMe *을"및 " copyMe "? 나는 둘 중 하나를 얻고 다른 하나를 얻기를 바랬습니다. 도움이 될 것입니다.

답변

1

캡쳐 식 ()을 사용하고 있기 때문에. 대괄호를 생략하면 *copyMe* 만 나타납니다.

+0

좋은 점 : 나는 괄호 그룹의 내용을 생각했지만 트릭을했다.) – Val

+1

또한 단지주의 : '|'가 아닌 구분 기호로'/'를 사용하여 Regexp를 작성하는 것이 가장 좋습니다. –