给你一个使用输出缓冲区的类
<?php
/**
*
* 作者: 徐祖宁 (唠叨)
* /club/bbs/showEssence.asp?id=20525
*
* 类: outbuffer
* 功能: 封装部分输出控制函数,控制输出对象。
*
* 方法:
* run($proc) 运行php程序
* $proc php程序名
* display() 输出运行结果
* savetofile($filename) 保存运行结果到文件,一般可用于生成静态页面
* $filename 文件名
* loadfromfile($filename) 装入保存的文件
* $filename 文件名
*
* 示例:
* 1.
* require_once "outbuffer.php";
* $out = new outbuffer();
* $out->run("test.php");
* $out->display();
*
* 2.
* require_once "outbuffer.php";
* require_once "outbuffer.php";
* $out = new outbuffer("test.php");
* $out->savetofile("temp.htm");
*
* 3.
* require_once "outbuffer.php";
* $out = new outbuffer();
* $out->loadfromfile("temp.htm");
* $out->display();
*
*/class outbuffer {
var $length;
var $buffer;
function outbuffer($proc="") {
$this->run($proc);
}
function run($proc="") {
ob_start();
include($proc);
$this->length = ob_get_length();
$this->buffer = ob_get_contents();
$this->buffer = eregi_replace("\r?\n","\r\n",$this->buffer);
ob_end_clean();
}
function display() {
echo $this->buffer;
}
function savetofile($filename="") {
if($filename == "") return;
$fp = fopen($filename,"w");
fwrite($fp,$this->buffer);
fclose($fp);
}
function loadfromfile($filename="") {
if($filename == "") return;
$fp = fopen($filename,"r");
$this->buffer = fread($fp,filesize($filename));
fclose($fp);
}
}
?>
<?php
/**
*
* 作者: 徐祖宁 (唠叨)
* /club/bbs/showEssence.asp?id=20525
*
* 类: outbuffer
* 功能: 封装部分输出控制函数,控制输出对象。
*
* 方法:
* run($proc) 运行php程序
* $proc php程序名
* display() 输出运行结果
* savetofile($filename) 保存运行结果到文件,一般可用于生成静态页面
* $filename 文件名
* loadfromfile($filename) 装入保存的文件
* $filename 文件名
*
* 示例:
* 1.
* require_once "outbuffer.php";
* $out = new outbuffer();
* $out->run("test.php");
* $out->display();
*
* 2.
* require_once "outbuffer.php";
* require_once "outbuffer.php";
* $out = new outbuffer("test.php");
* $out->savetofile("temp.htm");
*
* 3.
* require_once "outbuffer.php";
* $out = new outbuffer();
* $out->loadfromfile("temp.htm");
* $out->display();
*
*/class outbuffer {
var $length;
var $buffer;
function outbuffer($proc="") {
$this->run($proc);
}
function run($proc="") {
ob_start();
include($proc);
$this->length = ob_get_length();
$this->buffer = ob_get_contents();
$this->buffer = eregi_replace("\r?\n","\r\n",$this->buffer);
ob_end_clean();
}
function display() {
echo $this->buffer;
}
function savetofile($filename="") {
if($filename == "") return;
$fp = fopen($filename,"w");
fwrite($fp,$this->buffer);
fclose($fp);
}
function loadfromfile($filename="") {
if($filename == "") return;
$fp = fopen($filename,"r");
$this->buffer = fread($fp,filesize($filename));
fclose($fp);
}
}
?>
只要你知道如何把他们显示在页面上,就不难把他们写入静态文件里。
来个对比你就明白了
这个是在浏览器里显示(例子只是代码片断,无法正常运行)if ($row_num>0)
{
$nothing=0;
$j0=ceil(($row_num)/3);
echo "<TR align=middle bgColor=#ffffff>\n";
echo "<TD bgcolor=#ffeedd rowspan=".$j0.">".chr($i)."</TD>\n";
for ($j=0;$j<$j0;$j++)
{
if ($j!=0 && $j0 >= 2) echo "<tr align=middle bgcolor=#ffffff>";
for ($m=1;$m<=3;$m++)
{
$row=$db->fetch_assoc($result);
$songs=$row==NULL?" ":"( ".$row["singer_songs"]." )";
echo "<TD align=left height=25>\n";
echo "<A href=\"speciallist.php?key=singer_id&num=".$row["singer_id"]."\"> ".$row["singer_name"]."</A>\n";
echo "<A href=\"songlist.php?key=singer_id&num=".$row["singer_id"]."\"> ".$songs."</A></TD>\n";
}
echo "</TR>\n";
}
}if ($nothing==1) echo "<tr align=middle bgColor=#ffffff><td colspan=4>空</td></tr>";你如果要写入静态文件只要改成
$mfile=fopen("../htmlfile.htm","w+");
if ($row_num>0)
{
$nothing=0;
$j0=ceil(($row_num)/3);
fputs($mfile, "<TR align=middle bgColor=#ffffff>\n");
fputs($mfile, "<TD bgcolor=#ffeedd rowspan=".$j0.">".chr($i)."</TD>\n");
for ($j=0;$j<$j0;$j++)
{
if ($j!=0 && $j0 >= 2) fputs($mfile, "<tr align=middle bgcolor=#ffffff>");
for ($m=1;$m<=3;$m++)
{
$row=$db->fetch_assoc($result);
$songs=$row==NULL?" ":"( ".$row["singer_songs"]." )";
fputs($mfile, "<TD align=left height=25>\n");
fputs($mfile, "<A href=\"speciallist.php?key=singer_id&num=".$row["singer_id"]."\"> ".$row["singer_name"]."</A>\n");
fputs($mfile, "<A href=\"songlist.php?key=singer_id&num=".$row["singer_id"]."\"> ".$songs."</A></TD>\n");
}
fputs($mfile, "</TR>\n");
}
}if ($nothing==1) fputs($mfile, "<tr align=middle bgColor=#ffffff><td colspan=4>空</td></tr>");
fputs($mfile, "</TBODY></TABLE></body></html>\n");
fclose($mfile);也就 是 说把 俄echo 改写成 fputs ,别忘了fopen fclose,有flock当然更好,这样基本就可以了(个别地方要改,但不是很多)。如果觉得费劲,也可以编写个类来实现,不难,你自己试试。