phpcms模板解析嵌套标签解析失败-创新互联

PHPCMS的模板解析函数是/phpcms/libs/classes/template_cache.class.php这个类中的template_parse函数.

创新互联专注于青岛企业网站建设,响应式网站设计,成都做商城网站。青岛网站建设公司,为青岛等地区提供建站服务。全流程按需策划设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

我把这个文件拿出来,然后在下面直接写上

$str = '{php echo 1} -- {$abc}';
$template = new template_cache();
echo $c = $template->template_parse($str);

这时输出的是

不出所料,解析出的代码,出现了语法错误,我们 想要的结果应该是

 -- 

下面开始找问题,在函数template_parse的第3行,是用来解析php开头的模板语法的

$str = preg_replace ( "/\{php\s+(.+)\}/", "", $str );

这里可以看出,解析的方式是找到{php后面所有的内容,直到另一半大括号},这之间的内容,全部放到之间.

我们上面的例子之所以会出现那个结果,是因为在遇到第一个右大括号}时,没有把它当做结尾,而是继续向后读取.

知道原因后,就容易修改了

在正则中加一个问号?,用来表示非贪婪读取,在读到第一个右大括号时,就结束.

$str = preg_replace ( "/\{php\s+(.+?)\}/", "", $str );

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章名称:phpcms模板解析嵌套标签解析失败-创新互联
分享链接:http://myzitong.com/article/dhippj.html