У меня есть текстовая область, где наши пользователи могут заменять переменные данными реального заказа.
Например, {{service_name}}
будет заменено на "DJ Booth"
Теперь я создаю возможностьпоказать определенный текст на основе названия службы.Например ...
Some text at the start
{{if|service_name=DJ Booth}}
This is the text for DJs
{{endif}}
Some text in the middle
{{if|service_name=Dancefloor Hire}}
This is the text for dancefloor hire
{{endif}}
Some text at the end
Преобразование preg_match в несколько строк было решено с помощью U
(не жадный режим) и s
(многострочный)
Итак, вывод теперьis ....
Проблема в том, что может быть несколько условных выражений, поэтому я не могу просто предварительно сопоставить тип и затем вывести значение,так как мне нужно перебрать каждое совпадение и заменить текст в том месте, где оно было найдено, вместо вывода внизу.
Так что я использую это ...
$service = get_service();
preg_match_all("/{{if\|service=(.*)}}(.*){{endif}}/sU", $text, $matches);
$i=0;
foreach($matches[1] as $match) {
if ($match == $service) {
print $match[2][$i];
}
}
Что соответствует правильно, но просто выводит весь текст вместе, а не в том же месте, где они совпали.
ТАК мой вопрос ...
- Как получить замену на месте?
Спасибо!