Удалить блок тегов lex из строки

Здравствуйте, у меня есть этот шаблон синтаксического анализатора lex, который содержит тег обратного вызова, который я хочу удалить, потому что я получаю бесконечный цикл.

Я пробовал с php preg_replace но тогда я получаю белый экран. Тег, который я хочу удалить, имеет следующий формат:

{{ search:query term="value" .. more attributes .. }}

  // any content between these tags needs to be removed as well, including new lines

{{ /search:query }}

И это моя попытка на preg_replace:

$text = preg_replace('@\{\{\ssearch:(.*?)\}\}(.*?)\{\{\s/search:(.*?)\s\}\}@is','',$text);

Но это не работает. Любой совет почему?

1 ответ

$text = preg_replace('\{\{\s+search:query(\s+\S+=".*")+\s*\}\}.*\{\{\s*/search:query\s*\}\}Uims', '', $text);

Обрабатывает пропущенные и несколько пробелов, один или несколько attr="value" пары, многострочные и не жадные.

Другие вопросы по тегам