Я пытаюсь создать систему, где я могу создать файл, основанный на шаблоне. Шаблон хранится в БД, и я заполняю шаблон данными, отправленными из формы.Строка шаблона заменить в php
Я пробовал делать это таким образом, но я не могу использовать массив. Это всегда дает мне ошибку.
<?php
$string = "test";
$text = "This is a text for testing";
$rplc_string = '{$string}';
$rplc_text = '{$text}';
$tpl = '<html><head><title>{$string}</title></head><body><h1>{$string}</h1><p>{$text}</p><ul><?php foreach($array as $key => $value): ?><li><?php echo $key; ?></li><?php endforeach; ?></ul></body></html>';
$tpl = preg_replace($rplc_string, $string, $tpl);
$tpl = preg_replace($rplc_text, $text, $tpl);
$array = array('one' => '1', 'two' => '2', 'three' => '3');
ob_start();
eval('?>' . $tpl);
$output = ob_get_clean();
echo $output;
?>
Есть ли лучший способ сделать это?
Чем больше вопрос, зачем изобретать велосипед? Существует множество надежных систем шаблонов, которые, вероятно, будут служить вам лучше, чем то, что вы взломали. Они также предоставили бы хорошую возможность узнать, как могут быть разработаны такие системы шаблонов. Использование 'eval()' для стартеров - ДЕЙСТВИТЕЛЬНО плохая идея. –
@MikeBrant Это не шаблонная система. То, что я пытаюсь сделать, это то же самое, что и при использовании шаблона электронной почты, который будет заполняться данными от пользователя, так же, как вы заменили бы $ to_user по имени пользователя и $ to_email по электронной почте пользователя. – user3718566
есть несколько шаблонов электронной почты для шаблонов, которые не зависят от eval. вы в основном просите кого-то захватить вашу систему. –