首页 > 编程开发 > PHP    日期:2018-08-05 / 来自互联网 / 浏览

模板中最常见的是把头部,尾部分割开来,然后各个模板文件去用包含代码把他们引入进来,作为公共模板。那如何header.htm中又包含了a.htm 而a.htm又包含了b.htm呢?这种情况虽然非常少见,但学习下终归是好的,哈哈!

<?phpfunction get_tpl($matches) {
        echo $incFile = 'templates/' . $matches[1] . '.htm';
        echo '<br>';
        if (!file_exists($incFile)) { //如果文件不存在,返回false,匹配的部分直接忽略(变为空)                return false;
        }
        echo '<hr color=red>';
        $repIncFile = preg_replace_callback('/{get-(w+)}/', 'get_tpl', file_get_contents($incFile)); //检查被包含的文件是否又包含了另一个文件,有则先替换好(递归函数,不断查找,直到找不到,才不会去执行 get_tpl 停止递归)        echo $repIncFile;//查看每次替换后的内容        echo '<hr>';
        return $repIncFile;//返回最终替换内容}
$content = file_get_contents('templates/tpl.html');
$result = preg_replace_callback('/{get-(w+)}/', 'get_tpl', $content);echo $result;

{get-(w+)}可以匹配 {get-header} {get-a} {get-b} 根据引入的文件名再去查询里面是否有包含代码,有则替换,不断重复该操作,直到没有包含代码,则不再去递归函数。

觉得上面的内容有用吗?快来点个赞吧!

点赞() 我要打赏

温馨提示 : 本站内容来自会员投稿以及互联网,所有源码及教程均为作者总结编辑,请大家在使用过程中提前做好备份,以免发生无法预知的错误,源码类教程请勿直接用于生产环境!

 可能感兴趣的文章