//匹配模板中的标签对应{$test}
// '#\{\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*\}#',
'#'.$this->left.'\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*'.$this->right.'#',
//匹配模板中的foreach或者loop
'#'.$this->left.'\s*(loop |foreach)\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*'.$this->right.'#', //对应{foreach $userInfo}或{loop $userInfo}
'#'.$this->left.'\s*\/(loop|foreach|if)\s*'.$this->right.'#i',
//对应{/foreach}或{/loop}或{/if}
'#'.$this->left.'\s*([K |V])\s*'.$this->right.'#', //对应{K}或{V}//匹配if else else if elseif
'#'.$this->left.'\s*if\s*(.* ?)\s*'.$this->right.'#i', //对应{if $username=="king"}
'#'.$this->left.'\s*(else if|elseif)(.* ?)\s*'.$this->right.'#i',
//对应{elseif $a==1}或者{else if $a==1}
'#'.$this->left.'\s*else\s*'.$this->right.'#i', //对应{else}//匹配模板中的注释
'#'.$this->left.'\s*(\#|\*)(.*?)(\#|\*)\s*'.$this->right.'#' //对应{#注释123#}
);
$replacement=array(
'<?php echo $this->value["$1"]; ?>',
{$test}替换成<?php echo $this->value["$test"];
'<?php foreach((array)\$this->value["$2"] as $K=>$V){ ?>',
{foreach $userInfo}
替换成
<?php foreach((array)\$this->value["$userInfo"] as $K=>$V){ ?>
'<?php } ?>',
{/foreach}替换成<?php } ?>
'<?php echo $$1; ?>',
{K}替换成<?php echo $K; ?>
'<?php if ($1){ ?>',
{if $a>1}替换成<?php if ($a>1){ ?>
'<?php }elseif($2){ ?>',
{elseif $a>1}替换成<?php }elseif($a>1){ ?>
'<?php }else{ ?>',
{else}替换成<?php }else{ ?>
''//模板中的注释用空白替
{#我是注释,你看不见我#}替换成空白
);
preg_replace($pattern,$replacement,$subject);
将php原生代码开头和结束符实体化:<?php ?>等
$pattern='#<\?(=|php |)(.+?)\?>#is';
$replacement='<?$1$2?>';
preg_replace($pattern,$replacement,$subject);