Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена переменных в шаблонах
 
 автор: golovdinov   (12.02.2007 в 17:15)   письмо автору
 
 

Делаю шаблонизатор. Пока все нормально работает, но с одной неточностью....

Файл test.php:

<?
class make_template {
    var 
$path "";
    var 
$vars = Array ();
    var 
$out_vars = Array ();
    function 
set_var ($start_var$out_var) {
        
array_push ($this->vars$start_var);
        
array_push ($this->out_vars$out_var);
    }
    function 
display ($file) {
        if (
$file = @file_get_contents ($this->path.$file)) {
            
$file preg_replace ($this->vars$this->out_vars$file);
            print 
$file;
        }
        else
        {
            
site_error ("Ошибка подключения шаблона");
        }
    }
}
$template = new make_template ("./");
$template->set_var ("{HEADER}""Заголовок");
$template->set_var ("{BODY}""Текст");
$template->display ("template.tpl");
?>


Файл template.tpl:

<h1>{HEADER}</h1>
{BODY}


При вызове файла test.php заменяются только слова "HEADER" & "BODY", а скобки { и } остаются, на выходе получается так:

<h1>{Заголовок}</h1>
{Текст}


Как сделать, чтобы они заменялись вместе с переменными?

   
 
 автор: ZuArt   (12.02.2007 в 17:23)   письмо автору
 
   для: golovdinov   (12.02.2007 в 17:15)
 

preg_replace ("/".$this->vars."/", $this->out_vars, $file);

Должны быть обрамляющие символы, а после закрывающего можно поставить флаги, например "i" - если заменять ключевики без учета регистра
preg_replace ("/".$this->vars."/i", $this->out_vars, $file);

   
 
 автор: golovdinov   (12.02.2007 в 17:35)   письмо автору
 
   для: ZuArt   (12.02.2007 в 17:23)
 

К сожадению, не работает выдает ошибку:
Warning: preg_replace() [function.preg-replace]: Parameter mismatch, pattern is a string while replacement in an array. in .........\test.php on line 16

   
 
 автор: ZuArt   (12.02.2007 в 17:44)   письмо автору
 
   для: golovdinov   (12.02.2007 в 17:35)
 

эээ... сорь, $this->vars - это массив переменных? Если да, то надо каждый из элементов в первом параметре функции привести в указанный выше вид - поставить обрамляющие символы...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования