|
|
|
| Делаю шаблонизатор. Пока все нормально работает, но с одной неточностью....
Файл 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:
При вызове файла test.php заменяются только слова "HEADER" & "BODY", а скобки { и } остаются, на выходе получается так:
<h1>{Заголовок}</h1>
{Текст}
|
Как сделать, чтобы они заменялись вместе с переменными? | |
|
|
|
|
|
|
|
для: golovdinov
(12.02.2007 в 17:15)
| | preg_replace ("/".$this->vars."/", $this->out_vars, $file);
Должны быть обрамляющие символы, а после закрывающего можно поставить флаги, например "i" - если заменять ключевики без учета регистра
preg_replace ("/".$this->vars."/i", $this->out_vars, $file); | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: golovdinov
(12.02.2007 в 17:35)
| | эээ... сорь, $this->vars - это массив переменных? Если да, то надо каждый из элементов в первом параметре функции привести в указанный выше вид - поставить обрамляющие символы... | |
|
|
|