您的位置:首页 > 其它

正则表达式替换foreach_if_elseif_else

2016-03-24 19:49 274 查看
$pattern=array(
//匹配模板中的标签对应{$test}

// '#\{\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*\}#',
'#'.$this->left.'\s*\$([a-zA-Z_\x7f-\
4000
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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: