替换php中的文件内容并保存到新文件

时间:2012-10-11 02:26:35

标签: php html replace file-get-contents fwrite

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

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

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

因此,在数据库中,我有一个名为Joe的名称,我创建的新文件将包含以下内容:

<html>
some other content
Joe
</html>

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

2 个答案:

答案 0 :(得分:1)

看看我给this question a while back的答案。在那里,我解释了“变量解析”通常如何工作。

  

当我创建模板加载器时,我通常使用output buffering和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;
?>

答案 1 :(得分:1)

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

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

你也可以只使用PHP ......在SO上有一些答案可以解决这个问题,所以我不会介绍它。