Показать сообщение отдельно

  #9  
Старый 27.06.2008, 16:55
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме:
6023777

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

Вот - если кому интересно, сделал скрипт по этой теме, что-то вроде "системы" {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;
?>
Вывод:
Код:
1
3
5
7
9
 
Ответить с цитированием