[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите разобраться с небольшим парсером шаблонов
Страницы: 1, 2
Shkiper
Я написал метод(тут я выкладу только его) для парсинга шаблона:
....
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 шлифуется циклом и заменяется на то что прописали в массиве :) Но когда я загружаю страницу выводиться совсем не то, что должно было вывести. Ладно. Я шагнул в исходный код. Там все гуд:
user posted image
Я посмотрел данный кусок через фаербаг в хроме, вот тут то и выловилась истинная косячина:
user posted image
Почему так?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.