Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取非php文件中的php标记并执行_Php_Templates_Tags - Fatal编程技术网

读取非php文件中的php标记并执行

读取非php文件中的php标记并执行,php,templates,tags,Php,Templates,Tags,我试图实现的是构建一个简单轻量级的主题引擎,任何人都可以轻松地创建自己的模板,我使用PHP实现了这一点,例如,如果有人想要输入徽标,他们所要做的就是使用:{logo},等等 模板文件扩展名为“.inc”。。我的问题是,我不知道如何允许用户仍然使用php()标记执行php代码 我已尝试在我的htaccess中添加以下内容: AddType application/x-httpd-php .inc 我知道还有其他模板引擎存在,比如smarty,但我宁愿选择更简单的模板引擎。它与htaccess规则

我试图实现的是构建一个简单轻量级的主题引擎,任何人都可以轻松地创建自己的模板,我使用PHP实现了这一点,例如,如果有人想要输入徽标,他们所要做的就是使用:{logo},等等

模板文件扩展名为“.inc”。。我的问题是,我不知道如何允许用户仍然使用php(<?php?>)标记执行php代码

我已尝试在我的htaccess中添加以下内容:

AddType application/x-httpd-php .inc

我知道还有其他模板引擎存在,比如smarty,但我宁愿选择更简单的模板引擎。

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

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

eval(“?>$content\u of_template没有太多人愿意使用需要添加新的web服务器处理程序才能使用的模板引擎

因此,建议使用标准的完全支持的扩展名,如.php,而不是.inc,或者如果您真的愿意使用.inc,只需在打开输出缓冲的情况下包含文件,并在如下变量中收集输出:

ob_start();
require "template.inc";
$content = ob_get_clean();
$content
将保存
template.inc
中的任何内容,因此您可以使用它执行任何操作


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

问题的解决方案:使用Twig:)@alex.我真的不明白你的意思?@NikiC,我真的很希望我能在我自己的模板引擎上做这件事,所以我知道它是如何工作的,我喜欢让事情非常简单。至于Twig,它是否同时允许php标记和{}标记?…当然,要非常小心地清理模板的$content\u。@Scott是的,这是可取的,但模板引擎并不总是安全的。有许多模板引擎只使用纯PHP。如果你这样做,一定要去掉很多PHP函数,因为它们中的很多函数可能被恶意使用。你甚至可能会做得更好f在允许所有PHP模板进入网站之前批准/不批准它们。@Jaxo我不会批准或否定任何PHP模板,因为我将把这个脚本作为一个更大的脚本的一部分出售,所以任何想要创建自己模板的人,都有他自己的问题。:)我尝试使用standard.PHP扩展,但没有成功。I包含输出缓冲的文件可以无缝地工作,非常感谢。我已经为这个问题挠头有一段时间了!