李炎恢吧 关注:2,196贴子:6,215
  • 0回复贴,共1

关于李老师第二季Parser类中的ParIf方法

取消只看楼主收藏回复

//$str中$ccc并没有结束标记
$str = '
{if $abc}
123
{/if}
{if $ccc}
345
{if $cda}
abbb
{/if}
';
$_pattenIf = '/\{if\s+\$([\w]+)\}/';
$_pattenEndIf = '/\{\/if\}/';
$_pattenElse = '/\{else\}/';
if (preg_match($_pattenIf,$str)) {
if (preg_match($_pattenEndIf,$str)) {
$str = preg_replace($_pattenIf,"<?php if (\$this->_vars['$1']) {?>",$str);
$str = preg_replace($_pattenEndIf,"<?php } ?>",$str);
if (preg_match($_pattenElse,$str)) {
$str = preg_replace($_pattenElse,"<?php } else { ?>",$str);
}
} else {
exit('ERROR:if语句没有关闭!');
}
}
echo '<pre>';
echo $str;
//输出$str并没有报错,编译后的字符串如下
<pre>
<?php if ($this->_vars['abc']) {?>
123
<?php } ?>
<?php if ($this->_vars['ccc']) {?>
345
<?php if ($this->_vars['cda']) {?>
abbb
<?php } ?>
//不知道如何解决这个问题,有知道的告诉一下哈


IP属地:重庆1楼2016-02-22 08:45回复