将网页读入字符串,修改它,然后输出

时间:2014-01-11 16:43:22

标签: php

我有一个模板页面,它是HTML和PHP的组合。我想将整个内容输出到另一个页面,但我想在输出之前先动态修改内容,包括代码。

如果我理解正确eval()需要删除PHP单词和开头<?

到目前为止,我有以下内容:

    $str = file_get_contents($template);
    [Create an array of changes to make]

    $str = str_replace($changes,"",$str);

    $changes2 = array();
    $changes2[0] = '?php';
    $str = str_replace($changes2,"?",$str);
    $str = substr($str,3);
    eval("\$str = \"$str\";");  
    echo $str;

我最初只是在iframe中打开了内容,但正如我所说,我需要在输出之前先编辑文件中的代码(并且不需要修改原始模板代码)。

我能想到的另一种方法是将模板读入字符串,更改我需要的内容,将该字符串的内容写入临时文件,然后读入临时文件。

但感觉这就是这种冗长的做法。

有谁知道正确的做法?

1 个答案:

答案 0 :(得分:0)

使用 output buffering

它允许您捕获(缓冲区)输出,将其放入变量,执行任何操作,然后再次输出。

如果您在PHP处理完HTML后需要编辑HTML,那么输出缓冲是可行的方法。

最简单的例子:

<?php

ob_start();

echo "Hello World"; //Even though it was echoed, not getting displayed since buffered

$out = ob_get_clean(); //Get buffer into variable, then delete it, without displaying.
$out = strtolower($out);

var_dump($out); //Now output the new value, will show "hello world".

在您的情况下,您需要include相关文件(而不是file_get_contents()),捕获输出,更改更改,然后回显固定输出。