资料时间:2010年之前
分享时间:2010年到百度空间,空间关闭,重新整理
首先举个例子说明这个问题:
一个php脚本index.php访问后会输出一些字符串,现在想将这些字符串拦截过滤。
当然,方法很多,可以修改原文件,也可以在项目规划中合理设计将index.php的输出集中控制起来,但如果原来的脚本输出复杂,这个方法并不好,最好找到一个不修改原来文件的方法。现在分享一个经过个人尝试可以的一个方法,当然不是唯一的实现方法。
原理:用ob_start() 和 ob_end_flush() 控制输出缓冲,将输出内容输出到缓冲中,然后通过传递给ob_start()的回调函数处理缓冲。
这里列出一个将输出信息保存到变量中的方法:
<?php
...
//在这之前可以做任何工作,包括输出
$buf="";//保存输出
function callback($buffer) {
global $buf;
$buf.=$buffer; //保存本次输出
return ""; //不输出任何内容
}
ob_start("callback"); //开启输出缓冲
include "index.php"; //将原来的脚本包含进来
ob_end_flush(); //关闭输出缓冲
//在这之后可以做任何工作
,,,