正则表达式替换foreach_if_elseif_else
//匹配模板中的标签对应{$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*ifs*(.* ?)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*elses*".$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);
- 上一篇: 聊聊Dubbox(三):架构原理
- 下一篇: 数组的灵活应用(二)