假设我有一个包含文件foo.php,它包含文本“this file is foo”。
因此,当我使用<?php include 'foo.php'; ?>
加载include时,我希望能够在显示包含的文本之前替换include中的字符串。
所以我想说我想用“酷”来替换“foo”。
有意义吗?
答案 0 :(得分:7)
您可以使用:
<?php
function callback($buffer)
{
return (str_replace("foo", "cool", $buffer));
}
ob_start("callback");
include 'foo.php';
ob_end_flush();
?>
答案 1 :(得分:4)
您可以按照以下功能执行此操作:
$content=includeFileContent('test.php');
echo str_replace('foo', 'cool', $content);
function includeFileContent($fileName)
{
ob_start();
ob_implicit_flush(false);
include($fileName);
return ob_get_clean();
}
答案 2 :(得分:2)
基本思路很好,所用的实施方法不是。 Include用于将文件作为整体加载到内存中。当您不想更改所包含文件的任何内容时,您应该只使用'include ...'。使用include,您可以将文件加载到内存中,并打算使用它来处理下一步的任何内容。
动态包含的典型示例是模板文件。 include_once的典型示例是具有基本功能的文件。
BTW,我更喜欢include_once以上的require_once。
如果要在显示文件之前更改文件内容,则应在另一个函数中加载文件内容并在显示之前替换其内容。执行内容更改的函数应位于您包含的文件中(_once)。 应使用某种类型的文件处理程序加载应替换内容的文件。因为你想要替换文本,我建议使用file_get_contents()。
<?php
include 'foo.php';
$output = file_get_contents('bar.php');
$output = processContent($output);
?>
foo.php的例子:
<?php
function processContent($pText){
return str_replace('foo','cool',$pText);
}
?>
使用此技术可以帮助您将语义与实际输出分开,并且可以成为在运行时返回个性化消息的好方法。