preg_replace не отправлет в функию значение.

Mal Hack

Guest
preg_replace не отправлет в функию значение.

Доброе время суток.
Очень надеюсь, что кто-ть сталкивался с подобной проблемой и сможет мне чем-то помочь.
Итак. Для большей наглядности приведу пример из хэлпов:
PHP:
class myText
{
   function replacer($str) {
       $pattern = '#(<small[^>]*?'.'>)(.*?)(</small>)#si';
      return preg_replace($pattern, $this->replace('$2'), $str);
   }
   
   function replace($str) {
      echo 'infunc: <span class="small">'.$str.'</span>'."\n";
        return '<span class="small">'.$str.'</span>';
   }
}
Т.е. тут найденная регом строка передается в другую функцию, где происходит замена.
Вот мой код.
PHP:
<?php

 class TMPL_Parser
  {
   var $Main = array();

   function TMPL_Parser( $tmpl_content )
    {
     $this -> Main = explode( "<%FLUSH%>" , $tmpl_content );

     for( $i = 0 ; $i < count( $this -> Main ) ; $i++ )
      {
       $this -> Main[$i] = preg_replace( "/<%(.+?)%>/e" , "\$this -> TMPL_Parser_Static( '\\1' )"  , $this -> Main[$i] );
       print $this -> Main[$i];
       flush();
      }
    }

   function TMPL_Parser_Static( $tmpl )
    {
     global $DBI;
     global $SQL_Global;

     $DBI -> SQL_Query( $SQL_Global -> SQL_Global_Query( "get_tmpl_static" , $tmpl	) );

     return $DBI -> DataObj[0] -> tmpl_content;
    }
  }

?>
В данном случае preg должен находить: <%TITLE%> или <%CSS%>, например, затем передавать (TITLE или CSS) в метод TMPL_Parser_Static, чтобы там, через другой объект из базы был вынут соответствующий TITLE или CSS текст, и подставлен на место <%TITLE%> или <%CSS%>.
Теперь, опишу в чем заключается трабл...
Если в качестве строки handle, т.е. на что заменять стоит: "\$this -> TMPL_Parser_Static( '\\1' )", т.е. с кавычками по краям и \ перед $, то этот текст TITLE передается, но если мы сделаем так же, как и в примере из хэлпов, т.е. уберем кавычки по краям и \ перед $ в метод TMPL_Parser_Static будет передано строковое значение \1. Пробовал даже и # #si в реге делать все-равно одно и тоже.
В чем дело я понять не могу...
Все-таки мой способ - изврат и лишь обход проблемы, а не ее решение.
Вот тут уже пытался решить данный трабл..
http://forum.woweb.ru/index.php?s=&showtopic=7006
ЗЫ: PHP 4.3.2, на локале на WinXP, Apache 2.0.49.
Заранее спасибо за помощь.
 
Сверху