2014-01-20 5 views
0

[[]] 사이의 모든 것을 콜백 함수로 바꿀 다음 정규 표현식을 사용하고 있습니다.{} 사이의 내용을 바꾸는 PHP 정규식

$str = 'this is the text that {i want{to} replace this text} from it'; 
echo preg_replace('/ \{ ((?: [^{}]* | (?0))+) \} /x', 'REPLACE TEXT', $str); 
//=> this is the text that REPLACE TEXT from it 

이 정규식 : 중첩 된 괄호와 함께 작동합니다 답변을 게시

preg_replace_callback('~\[\[((?>[^]]++|](?!]))*)]]~', function ($m) use ($that) { 
    return "REPLACE TEXT"; }, $layout); 

답변

3
preg_replace_callback('~\{((?>[^}]++)*)\}~', function ($m) use ($that) { 
return "REPLACE TEXT"; }, $layout); 
+0

다시 시도해 편집하십시오. http://regex101.com/r/qN3sE7 –

+0

감사합니다. 매력처럼 작동합니다! +1 –

+0

중첩 대괄호로도 사용할 수 있습니까? – anubhava

관련 문제