Добрый день. Смастирили тут нечто похожее на шаблонизатор, но работает он не совсем так как надо. Помогите пожалуйста.
Суть творения моего в следующем.
Есть в БД табличка page
id | url | title | content
1 |/contacts |Контакты | Адреса, телефоны компании <br> {forma}
Обращаю внимани на столбец content. Там содержиться весь контент странички. На странице у меня есть форма обратной связи. Для того чтобы в БД не хранить php код, там есть такая строчка {forma}. Нужно это для того, что бы вместо этой записи подключать php скрипт.
Делаю я это так:
1. После того как сделал запрос к БД на выбор контента для соответствующей страницы, ищу в результате запроса фигурные скобки ({})
preg_match_all('|[{]+[a-z]+[}]|', $row_page_content["content"], $script_link);
Результат такого поиска храниться в масиве $script_link.
2. Дальше формирую массив в котором будут храниться указатели на скрипт который нужно подгружать, т.е. {forma} только без фигурных скобок
for ($i=0; $i< count($script_link[0]); $i++) {
$patterns_content_script[] = $script_link[0][$i];
$replacements_content_script[] = @file_get_contents(eregi_replace("[{}]", "", $script_link[0][$i]).".php");
}
$patterns_content_script[], $replacements_content_script[] - Это два массива исползуются позже, при замене указателя {forma} на скрипт Php
$replacements_content_script[] = @file_get_contents(eregi_replace("[{}]", "", $script_link[0][$i]).".php");
- Вот тут я использую file_get_contents для вывода файла скрпта в строку для последующей замены в тексте. И формируется имя скрипта, т.е. указатель {forma} без скобок + приписываю расширение файла php
3. Дальше вывожу сам контент с соответсующими заменами в тексте
switch ($patterns_content_script[0]) {
case FALSE:
echo $row_page_content["content"];
break;
case !FALSE:
echo eregi_replace("[{}]", "", preg_replace($patterns_content_script, $replacements_content_script, $row_page_content["content"]));
break;
}
Суть в следующем. если массив $patterns_content_script[0] пуст. Т.е. указателей {forma} не найдено, то выводим весь контент имеющийся в БД.
Если массив $patterns_content_script[0] НЕ пуст, то заменяем указатели на нужный нам скрипт.
Вот собственно и все. Все работает. И файлы со скриптами подключаются как надо… Но есть одно но. Содержимое этих файлов обрабатывается не так как надо. Т.е. скрипты интерпертируются при загрузке как обычный текст. Т.е. если в скрипте forma.php ,будет написано <? echo "test";?> то такой скрпт е выполняется… Ну тут то понятно что получаеется следующая конструкция <? <??> ?> . Если если в скрипте forma.php ,будет написано echo "test";, то воспринимется как обычный текст.
Можете подсказать как решить такую проблему?