Лучшая практика для замены значений на странице (токены), без использования (чистого) PHP?

В настоящее время я занимаюсь модернизацией простой системы шаблонов для пользователей, которые создают свои собственные страницы, и хотел бы, чтобы они могли вставлять свои собственные наборы. заранее установленное «переменные».

Вот рабочий процесс:

Client textarea -->  saved to database --> pulled from database --> page generated

Теперь вот пример того, что их textarea может выглядеть так:

Hello my name is {{firstname}} {{lastname}}.  My phone number is {{phone}}.

Где, конечно, значения firstname lastname а также phone все в настоящее время сидят в переменной сеанса. И либо когда страница сохраняется в базе данных или же страница сгенерирована нам нужно заменить {{firstname}} {{lastname}} а также {{phone}} с элементами, хранящимися в сеансе.

Что делается сейчас:

$pat    = "/\{\{$match\}\}/";  //where $match is a preg_match for the rendered html to see if there's a "token"
if ($match === 'FirstName') {
if (empty($firstname)) { $err[] = '{FirstName}'; } $str = preg_replace($pat, $firstname, $str);
}
if ($match === 'LastName') {
if (empty($lastname)) { $err[] = '{LastName}'; } $str = preg_replace($pat, $lastname, $str);
}

То, как это делается в данный момент, представляет собой сложную кучу кода, включая preg_match а также preg_replace — я знаю, что это не «правильный» или самый эффективный способ сделать это. Есть ли в PHP предустановленная функция для установки собственных шаблонов токенов и наблюдения за ними? Или, может быть, модуль, который может быть установлен? Класс или наблюдатель?

Я хочу повторить, что я не ищу чисто программное решение — поскольку это уже было сделано. Мне интересно, есть ли встроенное решение PHP, которое решает эту конкретную проблему? Или мне лучше создать свой собственный класс и собрать этот токен-аппарат с нуля?

я нашел эта страница, но это относится только к Drupal, и я не использую никаких готовых CMS в этом конкретном случае.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]