第6行,是endif,不是elseif。else的话,就可以。不能小写。详见教程。记得在官方网站看,是等效的。不过我通常用双等。

解决方案 »

  1.   

    1、可以写成一样的格式
    $page  =  preg_replace("/<!-- ENDIF.+?-->/",  "<?php\n}\n?>",  $this->template);
    处理时将忽略ENDIF后面的名字2、必须写成大写
    if (preg_match_all('/<!-- (ELSE)?IF ([a-zA-Z0-9_.]+)([!=<>]+)"([^"]*)" -->/', $page, $var))
    只处理大写的标记,除非你自己加上“i”属性3、通常需要两个
    $cmp   =  $var[3][$cnt];
    $code  =  "<?php\n$else"."if (\$$parent"."['$block'] $cmp \"$val\"){\n?>";
    这里对运算符并不做处理
    但是判断与赋值同时进行也是可以的
    if($a == 123)
    只是判断$a是否等于123

    $b = 123;
    if($a = $b)
    是令$a等于$b的值,同时判断$a是否不为空(0、""、false)