Исходный код:
[display = "home"]
html code
[/display]
[display = "category"]
html code
[/display]
[display = "home"]
html code
[/display]
Подскажите, как написать регулярное выражение, что бы шорт-код например [display = "home"]...[/display]
заменялся на пустоту. Главное, что бы он заменялся по очереди. То есть регулярное выражение должно находить начало [display = "..."]...
и первый найденный [/display]
, а не последний. Старался описать понятно.
Делаю так в цикле, но результат плох:
$pattern = str_replace(["\"", "[", "]", " ", "/"], ["\\\"", "\[", "\]", "\s+", "\/"], $display[1][$key]);
$pattern2 = str_replace(["\"", "[", "]", " ", "/"], ["\\\"", "\[", "\]", "\s+", "\/"], $display[4][$key]);
$result = preg_replace('/'.$pattern.'(.+?)'.$pattern2.'/is', "", $result);
Где в $pattern
попадает \[display = \"home\"\]
, а в $pattern2
попадает \[\/display\]
но в итоге результат не тот, который ожидается.
Вот вам регулярка для шаблонизатора:
/\[display = "(.+)"\]([^[]+)\[\/display\]/U
Если использовать preg_replace_callback
можно на лету менять содержимое или вовсе убирать блоки.
Пример работы регулярки: https://regex101.com/r/WlkqLp/1/
$regExp = '/\[display = "(.+)"\]([^[]+)\[\/display\]/U';
preg_replace_callback($regExp,function ($matches)
{
if($matches[1]=='home') return '';
if($matches[1]=='category') return $matches[2];
},$value);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Простейшая реализация чата со списком юзеров онлайнОдин SSE (стрим) выдаёт появившиеся новые строки в txt-файле, а другой скрипт с SSE отвечает...
Нужно провести манипуляции с архивами, то есть добавить в них файлыС zip понятно - стандартная встроенная библиотека в php уже протестированна
Знакомство с Drupal началось с проблемУстановлен Openserver 5