2011-07-17 31 views
2

我想要实现的是构建一个简单且轻量级的主题引擎,任何人都可以轻松创建他自己的模板,我已经设法使用PHP ,例如,如果有人想输入标志,他们所要做的就是使用:{logo}等。在非php文件中读取php标签并执行

模板文件扩展名是'.inc'..我的问题是,我不' t知道如何让用户仍然执行PHP代码,使用PHP(<?php?>)标签。

我试图在我的htaccess都添加此:

AddType application/x-httpd-php .inc 

我知道其他的模板引擎的存在,如智者,但我宁愿去的东西很多更简单。

+0

比只使用PHP更简单吗? – alex

+0

问题的解决方案:使用树枝:) – NikiC

+0

@alex。我真的没有明白你的意思吗? @NikiC,如果我可以在自己的模板引擎上做到这一点,我真的很喜欢,所以我知道它是如何工作的,我喜欢让事情变得非常简单。 至于Twig,它是否允许php标签和{}标签? –

回答

2

没有太多人会乐意使用模板引擎,它需要添加新的Web服务器处理程序才能使用它。

因此这将是最好使用标准的全面支持等扩展.PHP,而不是。公司或者如果你真的愿意用。公司只是包括文件与输出缓冲开启和收集输出在这样一个变量:

ob_start(); 
require "template.inc"; 
$content = ob_get_clean(); 

$content将持有任何在里面template.inc所以你可以做任何你想做的事情。

不仅如此,而且如果您的template.inc文件包含PHP变量,它们也将被解析。

+0

我试过使用标准的.php扩展名,但没有奏效。包括带输出缓冲的文件无缝工作,非常感谢。现在我一直在为此挠头! –

1

它与htaccess规则无关。您需要在完成解释模板标记之后立即评估PHP内容。例如:

eval("?> $content_of_template <?php "); 
+0

......当然,要非常小心地清理$ content_of_template。 –

+0

@Scott是的,这是可取的,但模板引擎并不总是安全的。有许多模板引擎只使用纯PHP。 – Karolis

+0

如果你这样做,一定要删除许多PHP的功能,因为它们中的很大一部分可能被恶意使用。在被允许进入网站之前,您可能会更好地批准/拒绝所有PHP模板。 – Scott