
27.06.2008, 16:55
|
|
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме: 6023777
Репутация:
2642
|
|
Вот - если кому интересно, сделал скрипт по этой теме, что-то вроде "системы" {if выражение}утверждение{/if}
Вот к примеру у нас есть массивы
Код:
$true = array(true, false, true, false);
$false = array(false, true, false, true);
И файл с шаблоном
Код:
1
{if $true[0] == false}2{/if}
{if $true[1] == $false[0]}3
{if false == $true[2]}8{/if}
5{/if}
{if false === $false[0]}
{if $true[0] == $false[0]}6{/if}
7
{if $true[1] == $false[3]}
8
{/if}
{/if}
9
Ну и сам скрипт
Код:
<?php
function format_eval($matches) {
$exp = preg_replace('~\$((?![0-9])[a-zA-Z0-9_\x7F-\xFF]+)~', '$GLOBALS[\'\\1\']', $matches[1]);
$txt = var_export($matches[2], true);
eval('$string = ('.$exp.') ? '.$txt.' : NULL;');
return $string;
}
$text = file_get_content('template.html'); // template.html - файл с шаблоном
$pattern = '~{if (.+)}(((?>(?R)|(((?!{if .+})|{/if})).+)+)+){/if}~isU';
while(preg_match_all($pattern, $text, $matches)) {
$text = preg_replace_callback($pattern, 'format_eval', $text);
}
echo $text;
?>
Вывод:
|
|
|