PHP:使用include()函数获取一个PHP文件

7

我有一个PHP脚本,使用file_get_contents调用一个主PHP模板(作为HTML模板),替换其中的一些词语,然后将最终文件另存为目录中的另一个PHP文件。

但是,主PHP模板本身包含include();require_once();,替换单词后保存的文件无法加载从主模板调用的文件。

保存文件的HTML源代码中有<?php include('file_here'); ?>,但没有file_here的输出--参见图像。

enter image description here

如何调用file_get_contents();并仍让主模板执行include();require_once();


你最好的选择是把主模板文件包含在一个ob_start/ob_get_clean块内,然后对结果进行替换。 - Orangepill
1个回答

14

file_get_contents()函数将获取文件的内容,而不会像执行PHP脚本一样执行它。如果您想要执行这段代码,您需要将其包含进来,或者通过一个(例如向Apache)的HTTP请求进行处理。

如果您将此文件包含进来,它将被作为PHP代码进行处理,并且当然会打印出您的HTML标签(include*可以接受任何类型的文件)。

如果您需要在打印输出之前处理其内容,请使用ob_*函数来操纵PHP输出缓冲区。请参阅:https://www.php.net/manual/en/ref.outcontrol.php

ob_start(); // Start output buffer capture.
include("yourtemplate.php"); // Include your template.
$output = ob_get_contents(); // This contains the output of yourtemplate.php
// Manipulate $output...
ob_end_clean(); // Clear the buffer.
echo $output; // Print everything.

顺便提一下,这种机制对于模板引擎来说会比较沉重。基本上,模板不应该包含PHP代码。如果您想要这样的行为,请看看Twig:http://twig.sensiolabs.org/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接