Php 不使用smarty等替换html页面中的占位符的最佳实践是什么?

Php 不使用smarty等替换html页面中的占位符的最佳实践是什么?,php,smarty,Php,Smarty,下面是我所做工作的一个基本例子 抓取html模板 $template = file_get_contents("skins/".CSS_URL."/layouts/homepage.html"); 生成要搜索的项的数组 $search = array("|{THUMB_FEATURED_IMAGE}|", "|{LARGE_FEATURED_IMAGE}|", "|{PAGE_CONTENT}|"); 生成项数组以替换搜索到的项 $replace = array($featured_imag

下面是我所做工作的一个基本例子

抓取html模板

$template = file_get_contents("skins/".CSS_URL."/layouts/homepage.html");
生成要搜索的项的数组

$search = array("|{THUMB_FEATURED_IMAGE}|", "|{LARGE_FEATURED_IMAGE}|", "|{PAGE_CONTENT}|");
生成项数组以替换搜索到的项

$replace = array($featured_image, $featured_image_l, $content);
是否实际更换

$output = preg_replace($search, $replace, $template);
然后回显输出


这是一种不好的做法吗?或者有没有更好的方法不必使用Smarty重写我的整个CMS?

我想说,这样做并不可怕,尽管这样做并不十分节省资源,因为你可以有效地两次提取内容


在模板
中包含PHP标记并使用
include()
包含模板文件不是一个非常简单的选择吗?

我认为最好的答案是使用PHP变量。然后,您只需包含“模板”文件,其中包含正则变量


如果你真的想尝试你正在做的事情。最好使用实际的HTML解析器。它可能会更快,更不容易出错。尽管实现它可能需要与实现Smarty一样多的时间。

这是一个老话题,但对于任何看到这一点的人来说都是如此。 虽然我不确定它的最佳实践,但我总是通过数组返回include并解析占位符

<?php //page.php
$html = "<html>
              <head>
                  <title>{PageTitle}<title>
              </head>
             ...
        </html>";
return $html;
输出看起来像

        <html>
              <head>
                  <title>This is my page title<title>
              </head>
             ...
        </html>

这是我的页面标题
...

就像我说的,我不是百分之百的了解如何。。这很有效。我使用它是因为我的大多数项目都很小。

我最初构建了php includes,但是它很快就变得不整洁了,因为到处都是html/php标记,我讨厌东西不整洁,哈哈。@Jon我明白了。作为一种可能的选择,这里有一个herdeoc符号:我今晚回家后会读一读。。。只是想为我的需要建立一个最好的系统。使用开源系统不是一种选择。我确实注意到我尝试的方法有点慢。我认为这是最好/最有效的方法。但是,可能需要一些约束和一致性来避免在那些不应该存在的模板中放置逻辑。因为这纯粹是为了前端使用,我需要多个模板,我想我将不得不恢复我所做的一切,并将其恢复到您提到的方式。并不是说我喜欢html/php的混乱,哈哈。
        <html>
              <head>
                  <title>This is my page title<title>
              </head>
             ...
        </html>