牛骨文教育服务平台(让学习变的简单)
博文笔记

正则表达式替换foreach_if_elseif_else

创建时间:2016-03-24 投稿人: 浏览次数:512
$pattern=array(
//匹配模板中的标签对应{$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="&lt;?$1$2?&gt;";

preg_replace($pattern,$replacement,$subject);



声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。