$lexems = [
"text" => "TEXT",
];
$data = [];
foreach ($_REQUEST as $k => $v) {
if (array_key_exists($k, $lexems)) {
$data[$k] => htmlspecialchars(trim($v));
}
}
$sourceText = file_get_contents("/path/to/template.txt");
foreach ($data as $k => $v) {
$sourceText = str_replace('{' . $lexems[$k] . '}', $v, $sourceText);
}
echo $sourceText;
Как оно работает:
1. На странице есть набор input с именами, соответствующими ключам ассоциативного массива $lexems;
2. После отправки данных на наш скрипт-обработчик, мы сохраняем все полученные данные в массив с теми же ключами;
3. Получаем исходный текст шаблона, где содержатся наши лексемы;
4. Проходимся массивом по полученным данным, выбираем по тем же ключам лексемы и заменяем их на пришедший с клиента текст, после чего выводим результат на экран.
Вместо str_replace можно использовать preg_replace или составить карту подмены и обойтись в str_replace без цикла. последнее самое предпочтительное в плане производительности на текстах небольшого объёма. Вариант с регулярками лучше использовать на массивных текстах.