从PHP包含文件替换字符串

时间:2013-08-28 12:19:42

标签: php include

假设我有一个包含文件foo.php,它包含文本“this file is foo”。

因此,当我使用<?php include 'foo.php'; ?>加载include时,我希望能够在显示包含的文本之前替换include中的字符串。

所以我想说我想用“酷”来替换“foo”。

有意义吗?

3 个答案:

答案 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);
  }
?>

使用此技术可以帮助您将语义与实际输出分开,并且可以成为在运行时返回个性化消息的好方法。