模板正则替换 遇到问题,求救!

Hycomer 发布于 2012/08/10 11:34
阅读 250
收藏 0
// <?php if( $aa == "1" ){
$str = '  {if $aa == "1"} 1 {else} 0 {/if}  {literal} {if bb==1} {/literal} ';

/*esle 解析失败 */
if(preg_match('/!(\{literal\})\s+\{else\}\s+(.+?)\}\s+!(\{\/literal\})/',$str)){
    $str =  preg_replace("/!(\{literal\})\s+\{else\}\s+(.+?)\}\s+!(\{\/literal\})/", "<?php } else {", $str);
}

/* 这个可以正常解析 */
if (preg_match('/\{literal\}\s+(.*?)\s+\{\/literal\}/', $str)) {
    $str = preg_replace("/\{literal\}\s+(.*?)\{\/literal\}/", " \\1 ", $str);
}

echo $str;

加载中
0
Hycomer
Hycomer

{literal} {if bb==1} {/literal}  :  原样输出,这个没有问题

但是  {else}  ,  外层没有{literal}  {/literal}  标签包裹,我想用  / !(\{literal\})\s+ \{else\} !(\{\/literal\}) /  j进行替换,

不知道错在哪里了,求救!

0
Hycomer
Hycomer
还是换成  : preg_match('/#{#if \s+ (.+?) #}#/','{if  \\1 }' ,$tr)   看起来不是很美观,还行。
返回顶部
顶部