我有一个PHP脚本,它使用file_get_contents
调用主PHP模板(充当HTML模板),从中替换几个单词,然后将最终文件另存为目录中的另一个PHP。
但主PHP模板本身包含include();
和require_once();
,替换单词后保存的文件不会加载从主模板调用的文件。
保存文件的HTML源代码中包含<?php include('file_here'); ?>
,但不包含file_here的输出 - 请参阅图像。
如何调用file_get_contents();并且仍然让主模板执行include();或require_once(); ?
答案 0 :(得分:5)
file_get_contents()
将获取文件的内容,而不是将其作为PHP脚本执行。如果你想要执行这段代码,你需要包含它,或者处理它(例如通过对Apache的HTTP请求)。
如果您包含此文件,它将被处理为PHP代码,当然,打印您的HTML标记(include*
可以采用任何类型的文件)。
如果在打印之前需要使用其内容,请使用ob_*
函数来操作PHP输出缓冲区。请参阅:http://www.php.net/manual/fr/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/