
08.11.2008, 19:40
|
|
Участник форума
Регистрация: 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..
Причина: Нашел пару косяков.
|
|
|