2014-01-20 2 views
0

У меня есть следующее регулярное выражение для замены всего между [[ и ]] с функцией обратного вызова. Как-то я не знаю, как изменить его, чтобы заменить текст между одиночными фигурными скобками { }:PHP regex для замены содержимого между {}

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

1

Проводка ответ, который должен работать с вложенными скобками также:

$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 

Это регулярное выражение использует conditional subpattern regex.

Смежные вопросы