在没有eval()的情况下使用带有php标签/代码的页面模板

时间:2018-02-16 19:12:07

标签: php templates

基本页面:

<?php
/* page options here */
require_once('init.php');
?>
<head>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            /* do stuff here */
        });
    </script>
</head>
<body>
    <content>
        <h1>Stuff</h1>
        <p>even more stuff</p>
        <?php echo('aaaaaaaaaaaaaa'); ?>
    </content>
</body>

基本模板:

<!DOCTYPE html>
<html>
<head>
    <?php echo $thing; ?>
    <!-- lots of header tags here whatever -->
    <!-- contents of <head> -->
</head>
<body>
    <div class=container>
        <!-- contents of <content> -->
    </div>
</body>
</html>

我试图使用&#34;基本页面&#34;中的语法创建基本的模板引擎。上面,我现在让它与eval()一起工作,应该避免。

它将解析整个文件,提取<head><content>的内容(或者如果我没有使用具有容器div的特定页面类型)

  • <head>的内容将附加到基本模板中的<head>(见上文)
  • <content>的内容将放在容器div内(见上文)
  • 其中的任何php标签应该被解析为php标签而不是普通字符串

现在,我使用它将内容放在应有的位置,并包含基本模板的文件:

function evil($content) {
    eval(' ?>'.$content.'<?php ');
}

这样的事情:

<!DOCTYPE html>
<html>
<head>
    <?php echo $thing; ?>
    <!-- lots of header tags here whatever -->
    <?php evil($page_head); ?>
</head>
<body>
    <div class=container>
        <?php evil($page_content); ?>
    </div>
</body>
</html>

现在,我想这样做,不使用eval(),这可能吗?

0 个答案:

没有答案