|
|
ɳ

楼主 |
发表于 2019-4-29 13:40:05
|
只看该作者
修改文件
phpcms\libs\classes\template_cache.class.php
修改
- /**
- * 解析模板
- *
- * @param $str 模板内容
- * @return ture
- */
- public function template_parse($str) {
- $str = preg_replace ( "/\{template\s+(.+)\}/", "<?php include template(\\1); ?>", $str );
- $str = preg_replace ( "/\{include\s+(.+)\}/", "<?php include \\1; ?>", $str );
- $str = preg_replace ( "/\{php\s+(.+)\}/", "<?php \\1?>", $str );
- $str = preg_replace ( "/\{if\s+(.+?)\}/", "<?php if(\\1) { ?>", $str );
- $str = preg_replace ( "/\{else\}/", "<?php } else { ?>", $str );
- $str = preg_replace ( "/\{elseif\s+(.+?)\}/", "<?php } elseif (\\1) { ?>", $str );
- $str = preg_replace ( "/\{\/if\}/", "<?php } ?>", $str );
- //for 循环
- $str = preg_replace("/\{for\s+(.+?)\}/","<?php for(\\1) { ?>",$str);
- $str = preg_replace("/\{\/for\}/","<?php } ?>",$str);
- //++ --
- $str = preg_replace("/\{\+\+(.+?)\}/","<?php ++\\1; ?>",$str);
- $str = preg_replace("/\{\-\-(.+?)\}/","<?php ++\\1; ?>",$str);
- $str = preg_replace("/\{(.+?)\+\+\}/","<?php \\1++; ?>",$str);
- $str = preg_replace("/\{(.+?)\-\-\}/","<?php \\1--; ?>",$str);
- $str = preg_replace ( "/\{loop\s+(\S+)\s+(\S+)\}/", "<?php \$n=1;if(is_array(\\1)) foreach(\\1 AS \\2) { ?>", $str );
- $str = preg_replace ( "/\{loop\s+(\S+)\s+(\S+)\s+(\S+)\}/", "<?php \$n=1; if(is_array(\\1)) foreach(\\1 AS \\2 => \\3) { ?>", $str );
- $str = preg_replace ( "/\{\/loop\}/", "<?php \$n++;}unset(\$n); ?>", $str );
- $str = preg_replace ( "/\{([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff:]*\(([^{}]*)\))\}/", "<?php echo \\1;?>", $str );
- $str = preg_replace ( "/\{\\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff:]*\(([^{}]*)\))\}/", "<?php echo \\1;?>", $str );
- $str = preg_replace ( "/\{(\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/", "<?php echo \\1;?>", $str );
- $str = preg_replace_callback("/\{(\\$[a-zA-Z0-9_\[\]\'"\$\x7f-\xff]+)\}/s", array($this, 'addquote'),$str);
- $str = preg_replace ( "/\{([A-Z_\x7f-\xff][A-Z0-9_\x7f-\xff]*)\}/s", "<?php echo \\1;?>", $str );
- $str = preg_replace_callback("/\{pc:(\w+)\s+([^}]+)\}/i", array($this, 'pc_tag_callback'), $str);
- $str = preg_replace_callback("/\{\/pc\}/i", array($this, 'end_pc_tag'), $str);
- $str = "<?php defined('IN_PHPCMS') or exit('No permission resources.'); ?>" . $str;
- return $str;
- }
- /**
- * 转义 // 为 /
- *
- * @param $var 转义的字符
- * @return 转义后的字符
- */
- public function addquote($matches) {
- $var = '<?php echo '.$matches[1].';?>';
- return str_replace ( "\\"", """, preg_replace ( "/\[([a-zA-Z0-9_\-\.\x7f-\xff]+)\]/s", "['\\1']", $var ) );
- }
- public static function pc_tag_callback($matches) {
- return self::pc_tag($matches[1],$matches[2], $matches[0]);;
- }
复制代码
|
|