- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Вы не так понимаете смысл рекурсивных шаблонов :)
Рекурсия это не последовательность, а вложенность, когда внутри чего-то одного подходящего под шаблон может быть чего-то другое, так же подходящее под шаблон. Яркий пример - упорядоченное выуживание текста из вложенных друг в друга html-тэгов.
Вашу же задачу решить регулярным выражением невозможно, слишком жирно будет 😂
Регулярки ищут совпадение, запоминают и возвращают что нашли. Дополнительные действия с результатом они не производят.
Вытащил из своего шаблонизатора 2002-го года - просто как вариант альтернативного решения при похожей нужде.
Мне требовалось, чтобы при обработке шаблона можно было вставить другой шаблон, в котором бы тоже всё работало как в самостоятельном шаблоне ("рекурсивно"):
{
$text = @join('',file(template_filename($template)));
return preg_replace("/{([\w\._@ :\"'=\-\x80-\xFF]+)}/e","template_get_value('\\1',\$vars)",$text);
}
function template_get_value($var, &$vars)
{
...
return $value;
}
Что-то я бы сейчас написал иначе (в частности, UTF-8 там не было в помине), но для примера это не имеет значения (код работал без сбоев 8 лет, пока не проворонили хостинг).
Функция template_get_value($var, &$vars) после обработки возвращала то, что требовалось по логике шаблонизатора в нужных комбинациях (при этом естественно имела право вызвать какую-то функцию рекурсивно, например, вложить другой шаблон). &$vars использовать необязательно. Это были переменные, "глобальные" для данного контекста обработки шаблона (например, там были базовый урл сайта, базовый урл для картинок, и т.д., в т.ч. изменяемые элементы).
Внутри функции уже можно было делать explode() и т.д. Но получается, что изначальная регулярка была только одна.
P.S. фигурные скобки не заэкранированы, т.к. здесь не возникает двусмысленности (т.к. перед возможным квантификатором "{...}" ничего нет).