Example #1
0
 private static function _match($matches)
 {
     $content = $matches[1];
     //替换特殊字符
     self::$_tmpData = array();
     self::$_tmpIndex = 0;
     $content = preg_replace_callback("/([\\'\"])(.+?)\\1/m", array("Tpl", "_tmpData"), $content);
     //{{{if,elseif,/if; foreach,/foreach; for,/for
     $pattern = "/^(if|foreach|for)(([\\s|\\(]+)(.+))/msi";
     $content = preg_replace_callback($pattern, create_function('$m', '$t = trim($m[3]);$v = trim($m[2]);if(empty($t)){return "{$m[1]}($v){";}else{return "{$m[1]}$v{";}'), $content);
     $patterns = array("/^(elseif)([\\s*|\\(].*)/msi", "/^(else)/msUi", "/^\\/(if|foreach|for)/msi");
     $replacements = array('}\\1(\\2){', '}\\1{', '}');
     $content = preg_replace($patterns, $replacements, $content);
     //}}}
     //function
     //{fun $param }
     //{fun $param1 $param2 "param3" }
     //{fun($param1,$param2,"param3")}
     //{fun ($param1,$param2,"param3")}
     $pattern = "/^(\\w+)\\s+(.*)/ms";
     do {
         $content = preg_replace_callback($pattern, array("Tpl", "_matchfunction"), $content, -1, $ct);
     } while (0);
     //modifier,支持多种格式,与多极modifier
     //{$v|modifer}
     //{$v|modifer:1:2}
     //{'v'|modifer:1:2|modifer:3}
     $pattern = "/(.+?)\\|([^\\|]+)/ms";
     do {
         $content = preg_replace_callback($pattern, array("Tpl", "_matchmodifier"), $content, -1, $ct);
     } while ($ct);
     //{{{替换变量,加ECHO
     $patterns = array('/\\$(\\w+)/ms', '/^(?!(if|else|for|foreach|elseif))(\\w+)([^\\=]+)$/ms');
     $replacements = array('Tpl::$_tpl_vars["\\1"]', 'echo \\0');
     $content = preg_replace($patterns, $replacements, $content);
     //还原特殊字符
     $content = str_replace(array_keys(self::$_tmpData), self::$_tmpData, $content);
     ////}}}
     $content = "<?php {$content}; ?>";
     return $content;
 }