Показать сообщение отдельно

  #6057  
Старый 08.11.2008, 19:40
EST a1ien
Участник форума
Регистрация: 02.04.2006
Сообщений: 273
С нами: 10582516

Репутация: 114
По умолчанию

Есть следующий код. Есть ли идеи по оптимизации.
PHP код:
$data=<<<HEREDOC
[foreach {f_arr}]
{f_val:name}<br />
<b>{f_val:value}</b>
<br /><br />
[/foreach]
HEREDOC;



            
$vars['foreach']['arr'][]=array('name'=>'my1','value'=>'jon');
            
$vars['foreach']['arr'][]=array('name'=>'my2','value'=>'smit');
            
$vars['foreach']['arr'][]=array('name'=>'my3','value'=>'anjil');
            
$vars['foreach']['arr'][]=array('name'=>'my4','value'=>'demon');
            
$vars['foreach']['arr'][]=array('name'=>'my5','value'=>'tokar');

    
preg_match_all('/\[foreach {f_(.+?)}](.+?)\[\/foreach\]/is'$data$parr);
        if(isset(
$parr))
        {
            
$tmpd='';
            foreach (
$parr[0] as $k => $v) {
                foreach (
$vars['foreach'][$parr[1][$k]] as $tmp)
                {
                    
//print_r($tmp);
                    
$work=$parr[2][$k];
                    
preg_match_all('/{f_(\S+?):(\S+?)}/i'$data$farr);
                    
$num_var=count($farr[2]);
                    for(
$i=0;$i<$num_var;$i++)    $work=str_replace("{f_{$farr[1][0]}:{$farr[2][$i]}}",$tmp[$farr[2][$i]],$work);
                    
$tmpd.=$work;
                }
            
$data str_replace($v$tmpd,$data );
            }
        }
echo 
$data
у меня только одна идея.
заменить тут str_replace
PHP код:
for($i=0;$i<$num_var;$i++)    $work=str_replace("{f_{$farr}:{$farr}}",$tmp],$work); 
на preg_replace но чето немогу некак составить регулярку. Да и надо ли?
Еще думаю можно избавиться от временных переменных. но тоже не-могу придумать нечего.


ЗЫ нашел пару косяков в коде. )) правлю. сори за беспокойство )

Последний раз редактировалось EST a1ien; 08.11.2008 в 20:40.. Причина: Нашел пару косяков.
 
Ответить с цитированием