-1

所以我会有一个名为 template.php 的模板文件,里面有:

<html>
some other content
<?php $name ?>
</html>

本质上,我想从数据库中提取名称并将其插入 $name 并将整个页面保存为新文件。

所以假设在数据库中,我有一个叫 Joe 的名字,我创建的新文件里面会有以下内容:

<html>
some other content
Joe
</html>

我遇到的唯一问题是找到正确的函数来实际替换模板文件中的变量,并能够将其保存到新文件中。

4

2 回答 2

1

看看我不久前对这个问题给出的答案。在那里我解释了“变量解析”通常是如何工作的。

当我创建模板加载器时,我通常将输出缓冲与 php 一起使用include。这允许您在准备好之前将页面作为 php 文件运行,而无需显示其内容。以这种方式“解析”您的 php 文件的优点是您仍然可以运行循环和函数。

这是一个如何使用 PHP 的输出缓冲来创建您想要的内容的示例。

模板 template.php

<html>
some other content
<?php $name ?>
</html>

你的数据库代码和东西在哪里 index.php

<?php

$name = 'John Doe';

if( /* some sort of caching system */ ) {
  $parsed_template = file_get_contents('parsed_template.html');
}else {
  ob_start();
  include 'template.php';
  $parsed_template = ob_get_clean();

  file_put_contents('parsed_template.html', $parsed_template);
}

echo $parsed_template;
?>
于 2012-10-11T02:34:32.553 回答
1

这不是模板通常的工作方式。您应该有一个模板文件,用变量替换它们的值,并将其显示给用户。您可以缓存这些生成的模板(始终相同的模板),但您永远不会为每个用户创建新的模板文件并将其永久保存。这使得管理和更新应用程序比您想要的更加困难。

我推荐使用像RainTPL这样的简单模板系统。这就是我在大多数项目中使用的……它使用起来非常简单,并提供了您需要的所有基本功能。

您也可以只使用 PHP 来解决这个问题……关于 SO 有一些答案涵盖了这一点,所以我不会深入探讨。

于 2012-10-11T02:37:14.827 回答