0

我正在尝试为我正在制作的 CMS 制作模板文件,其中模板文件可以包含变量,例如 {username}当页面包含在 index.php 页面中时被替换的常规文本。

示例:索引页面:

<?php include('templates/123/index.php'); ?>

模板/123/index.php 页面

<?php include('header.php'); ?>
Welcome {username}
<?php include('footer.php'); ?>

我尝试了几种方法;但是,总是遇到问题,因为我试图更改内容的页面包含 PHP 代码。我尝试的每种方法要么 1) 搞砸了,因为文档中 PHP 标记的打开和关闭或 2) 只是回显了文档中的 PHP 代码。有什么办法我仍然可以实现这一目标吗?也许甚至有某种类?我只是希望能够安全地实现这一目标。

我还将使用它来将自定义变量(如 {content1})替换为一个 php 代码,该代码将被离子立方化,从数据库中检索位于 column1 中的内容的数据,与 {column2} {column3} 和 {column4} 相同。我只是想让模板的创建变得非常容易。(所以我想让代码也适用于此)

4

2 回答 2

1

我喜欢做这样的事情的方法包括以以下方式开始我的代码:

ob_start(function($c) {
    $replacements = array(
        "username"=>"Kolink",
        "rank"=>"Awesome"
    );
    return preg_replace_callback("/{(\w+)}/",function($m) use ($replacements) {
        return isset($replacements[$m[1]]) ? $replacements[$m[1]] : $m[0];
    },$c);
});
于 2013-04-20T05:35:58.617 回答
0

我建议的两个步骤

  1. 将文件“templates/123/index.php”的结果加载到变量中。请参阅此链接以了解如何将 PHP 脚本的执行输出分配给变量?
  2. 使用 strtr() 函数替换占位符,即 {username} 用实际值

我认为这将满足您的需求。

于 2013-04-20T05:39:12.847 回答