Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не могу настроить шаблонизатор

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: помогите с реплейсом
james
Отправлено: 01 Января, 2008 - 20:25:37
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Сент. 2007  


Помог: 0 раз(а)




Здраствуйте всем!
Я пишу скрипт к нему написал шаблонизатор сам скрипт на ООП, так вот есть функция реплейса:
public static function Replace($key, $value, $handle) {
if (self::$_replaces[$handle][$key] = $value) return true; else return false;
}
к нему идёт
private static $_replaces = array();

Так вот в реплейсе текста она совершенна но вот когда я пытаюсь сделать так:
self::Replace("BLOCKS:FLY, (.+?)", parent::Blocks('fly', '\1'), $module);
то в функцию не передаётся значение.
пробывал
self::Replace("BLOCKS:FLY, (.+?)", "parent::Blocks('fly', '\1')", $module);
self::Replace("BLOCKS:FLY, (.+?)", 'parent::Blocks('fly', '\1')', $module);
если так то заменяет \1 но саму функцию как текст выводит не выполняя, подскажите как переписать алгоритм плиз!
 
 Top
Нирвана
Отправлено: 03 Января, 2008 - 16:50:36
Post Id



Новичок


Покинул форум
Сообщений всего: 13
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. class predator_template
  2. {
  3.    var $template="default.tml";
  4.    var $template_dir = "./";
  5.    var $output = "";
  6.    var $start_tag;
  7.    var $end_tag;
  8.    var $placeholders = array();
  9.    var $edit_mode = false;
  10.    
  11.    function predator_template($html_template, $find_replace_array, $start_tag, $end_tag){
  12.       if ($html_template){$this->template = $html_template;}else{$this->template ="default.tml";}
  13.       if ($find_replace_array){$this->placeholders = $find_replace_array;}
  14.       if ($start_tag){$this->start_tag = $start_tag;} else {$this->start_tag = "<!--::";}
  15.       if ($end_tag){$this->end_tag = $end_tag;} else {$this->end_tag ="::-->";}
  16.       $this->template_dir = "";
  17.       $this->output = "";
  18.    }
  19.    
  20.    function parse(){
  21.       ob_start();
  22.       $this->parse_template();
  23.    }
  24.    
  25.    function display(){
  26.       $this->clean_up();
  27.       echo $this->output;
  28.       ob_end_flush();
  29.    }
  30.    
  31.    function parse_template(){
  32.       $full_path = $this->template_dir.$this->template;
  33.       $fp = @fopen($full_path, 'r');
  34.       if (!$fp){
  35.             if (@file_exists($full_path)){
  36.                 echo "Невозможно открыть шаблон ".$full_path.".  Проверьте разрешения";
  37.             } else {
  38.                                         echo "Шаблон ".$full_path." не существует.";   
  39.                                 }
  40.            
  41.       }
  42.       $this->output = @fread ($fp, filesize($full_path));
  43.       $this->replace_placeholders();
  44.       @fclose($fp);
  45.    }
  46.    
  47.    function replace_placeholders(){
  48.       foreach($this->placeholders as $placeholder => $replace){
  49.          $search = $this->start_tag.$placeholder.$this->end_tag;
  50.          $this->output = str_replace($search, $replace, $this->output);
  51.       }
  52.    }
  53.    
  54.    function clean_up(){
  55.       $expr = "$this->start_tag([a-zA-Z0-9_#]+)$this->end_tag";
  56.       $this->output = ereg_replace($expr, "", $this->output);
  57.    }
  58. }


Использование - например index.php
PHP:
скопировать код в буфер обмена
  1. //-------------------------------
  2. $vivod['title'] = "Мой сайт";
  3. $vivod['keywords'] = "вася, петр, толик, махмуд, аня"
  4. //-------------------------------
  5.     // Использование
  6.     // *Подключаем шаблон*
  7.     $template = new predator_template("shablon/index.tml", $vivod, "<!--::", "::-->");
  8.     $template->parse_template();
  9.     $template->display();
  10. //-------------------------------
  11.  

В шаблоне:
Цитата:

<title><!--::title::--></title>
<meta content="<!--::keywords::-->" name="keywords">
//--------------------------------


Держи шаблонизатор, простой как три копейки, может пригодится Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB