| Sergey |
|
|---|---|
|
Страница, как шаблон. Для этой цели я использую так называемый мной тег-процессор. Соответствующим заключительным этапом я предоставляю возможность юзеру вставлять теги в текст страницы. формат: {{ассоциация или имя тега}возможная замена сообщения} Для чего нужна ассоциация. Она позволяет просто написать: Размер телевизора по диагонали {{ДИАГОНАЛЬ}} что даст отображение: Размер телевизора по диагонали 61см механизм позволяет интерпритировать ассоциацию с конкретным экстраполем. Вот и получается, что наряду с категорией надо вводить и ассоциацию. Вот пример функции для Генуи:
function тег_процессор // функция процессора тегов вида {{тег}аргумент замены для тегов, которые включают HTML тег А}
// аргумент замены для тегов, которые включают HTML тег А =значение необязательно
// В том случае, если имеется указание на то, что тег содержится внутри другого тега,
// то тогда из тега должен быть извлечен аргумент HTML параметр hreff и зменнет аналогичным из тега
(
$входная_строка=FALSE, //@param string - обрабатываемая строка
$тег_в_якоре=FALSE,
$tags
)
{
global $cfg;
if (empty($входная_строка)) return $входная_строка;
$голова='';
$тело=$входная_строка;
while(TRUE)
{
$найден_тег=FALSE;
$это_меняем=FALSE;
$это_заменяем=FALSE;
$часть=preg_split('/\\{\\{\\s*([a-zA-Z0-9_'.$cfg['alpha_national'].']*)(\\})/ui', $тело,2,PREG_SPLIT_DELIM_CAPTURE);
if (count($часть) == 4)
{
$голова.=$часть[0];
$найден_тег=$часть[1];
$тело=$часть[3];
$аргумент_замены=preg_split('/(\\})/ui', $тело,2,PREG_SPLIT_DELIM_CAPTURE);
if (count($аргумент_замены) != 3) break;
$тело=$аргумент_замены[2];
if (empty($найден_тег) or !isset($tags->vars[$найден_тег]))
{
$голова .="{?{".$найден_тег."}?}";
continue;
}
$найден_тег=$tags->vars[$найден_тег];
$это_меняем=TRUE;
if (!$тег_в_якоре)
{
$ищем_якорь_в=$найден_тег;
$это_заменяем=$часть[0];
while(TRUE)
{
$порция=preg_split('/a\\s*(href)*\\s*\\=/ui', $ищем_якорь_в,2,PREG_SPLIT_DELIM_CAPTURE);
if (count($порция) == 3)
{
if (empty($порция[2])) break;
else $ищем_якорь_в=$порция[2];
}
else {$это_заменяем=FALSE; break;}
}
}
else if (!empty($аргумент_замены[0]))
{
$порция=preg_split('/(\>)/ui', $найден_тег,2,PREG_SPLIT_DELIM_CAPTURE);
if (count($порция) == 3)
{
$замена=preg_split('/(<\\/a|A>)/ui', $порция[2],2,PREG_SPLIT_DELIM_CAPTURE);
$найден_тег=$порция[0].'>'.$аргумент_замены[0].'</A>';
}
}
if ($это_меняем)
{
$голова .= $найден_тег;
}
}
else break;
return $голова.$тело;
}
www.cotonti.mobi
Відредаговано: Sergey (31.05.2012 14:11, 13 років тому) |