我有一个模板页面,它是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
中打开了内容,但正如我所说,我需要在输出之前先编辑文件中的代码(并且不需要修改原始模板代码)。
我能想到的另一种方法是将模板读入字符串,更改我需要的内容,将该字符串的内容写入临时文件,然后读入临时文件。
但感觉这就是这种冗长的做法。
有谁知道正确的做法?
答案 0 :(得分:0)
它允许您捕获(缓冲区)输出,将其放入变量,执行任何操作,然后再次输出。
如果您在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()
),捕获输出,更改更改,然后回显固定输出。