Php 是否在包含文件内容之前运行函数?
目前,我正在包括我的HTML“视图”,如下所示: 在包含视图文件之前,我希望能够对其内容运行函数,但我不确定如何执行该操作,并且在不使用eval的情况下仍然包含视图: 我基本上希望对函数的结果执行“include”类型的操作。大概是这样的:Php 是否在包含文件内容之前运行函数?,php,Php,目前,我正在包括我的HTML“视图”,如下所示: 在包含视图文件之前,我希望能够对其内容运行函数,但我不确定如何执行该操作,并且在不使用eval的情况下仍然包含视图: 我基本上希望对函数的结果执行“include”类型的操作。大概是这样的: include foo_function(file_get_contents($path_to_view)); 我如何才能做到这一点,或者评估是我唯一的选择 编辑 我目前正在使用输出缓冲区。我不想更改磁盘上的视图内容,我只想获取视图的内容,对这些内容运行一
include foo_function(file_get_contents($path_to_view));
我如何才能做到这一点,或者评估是我唯一的选择
编辑
我目前正在使用输出缓冲区。我不想更改磁盘上的视图内容,我只想获取视图的内容,对这些内容运行一个函数,并“包含”内容,以便对其进行计算。查看输出缓冲区。您可以将文件的内容放入var中,然后像往常一样解析它
祝你好运。听起来你在寻找输出缓冲。看
我现在正在使用输出缓冲区。。。但我仍然必须在某个时候“包含”文件的内容,以便对其进行评估,我正在这样做。我只想在“包含”文件之前,在文件内容上运行一个函数。我想如果你能发布更多的代码,它会澄清很多问题。例如,我无法理解你的意思。如果$path_to_视图包含HTML,则文件的include会将其内容连接到输出。实际上,这与说“echo file_get_contents($path_to_view);”是一样的。所以,为了回答您的问题,您几乎做到了:“echo my_preprocessing_function(file_get_contents($path_to_view));”是有道理的。@Remco:这似乎不会导致PHP出现在要计算的视图中。我仍然需要在视图的内容上运行一个函数。我不想实际修改磁盘上的视图,我只想获取内容,在其上运行一个函数,然后“包含”内容,以便对其进行计算。@TaylorOtwell-使用上述示例中的输出缓冲,PHP将包含您的视图并在其中安全地执行PHP,然后运行回调函数。$buffer
变量包含视图的内容,以便进一步处理它。这不是你要找的吗?也许。。执行的顺序是什么?我基本上运行了一些简单的正则表达式来将“模板”转换成普通的PHP。。。在输出缓冲区的内容被PHP“评估”之前,我需要运行回调。@TaylorOtwell-首先执行include
。您要查找的内容可能类似于file\u get\u contents($path\u to\u view)
获取内容,然后调用函数,最后使用eval
。小心使用eval
@TaylorOtwell-我已经使用ob\u start
和类似于上面示例的东西创建了模板。您可以调用preg_replace('/abc/','$buffer)
然后返回$buffer代码>在PHP执行后替换。。。
include foo_function(file_get_contents($path_to_view));
<?php
function callback($buffer)
{
// Do something useful here.
return $buffer;
}
ob_start('callback');
include $path_to_view;
ob_end_flush();