....
public static function replace_cycle($tpl_name, $tag_name, $replacement)
{
$tpl_path = self::$tpl_dir . $tpl_name;
if(file_exists($tpl_path))
{
$tpl_ctn = file_get_contents($tpl_path);
$preg_pattern = "#\[".$tag_name."\](.*)\[/".$tag_name."\]#isU";
preg_match($preg_pattern, $tpl_ctn, $rep);
if(count($rep))
{
$tpl_rep = $rep[0];// С тэгами
$tpl_action = $rep[1]; // Без тэгов
$replace = "";
$copy = $tpl_action;
$result = "";
foreach($replacement as $k=>$v)
{
foreach($v as $original=>$repOrig)
{
$copy = str_replace($original, $repOrig, $copy);
}
$result .= $copy;
$copy = $tpl_action;
}
$result = str_replace($tpl_rep, $result, $tpl_ctn);
}
else
{
$result = null;
}
}
else
{
$result = null;
}
return $result;
}
.....
Теперь приведу пример шаблона для парсинга:
<p><ul>[working_area]<li><a href="{href}">{name}</a></li>[/working_area]</ul></p>
И приведем в действие:
ИмяКласса::replace_cycle("имя шаблона", "working_area", array(
1 => array(
'{href}' => "1.html",
'{name}' => "1"
),
2 => array(
'{href}' => "2.html",
'{name}' => "2"
),
));
На выводе мне должно выдать вот что:
<p><ul><li><a href="1.html">1</a></li><li><a href="2.html">2</a></li></ul></p>
То есть то что находиться между тэгом working_area шлифуется циклом и заменяется на то что прописали в массиве :) Но когда я загружаю страницу выводиться совсем не то, что должно было вывести. Ладно. Я шагнул в исходный код. Там все гуд:
Я посмотрел данный кусок через фаербаг в хроме, вот тут то и выловилась истинная косячина:
Почему так?