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; }