用include()和ob_get_contents( )方法 生成静态文件

时间:2024-04-12 11:33:36

1. 生成静态文件可以在打开缓冲区的前提下,用include()方法去包含要执行的动态文件,这样该动态文件就会在缓冲区中执行,执行完毕后的静态HTML代码就保存在缓冲区中,然后用ob_get_contents()方法去获取缓冲区中的内容,(注意:在获取缓冲区内容的前提是一定要打开缓冲区ob_start();),将这些内容保存到一个字符串中,再将该字符串写入到文件中即可。

<?php
header("Content-type: text/html; charset=UTF-8");
ob_start();//打开缓冲区
include("admin.php");//包含php文件admin.php
$str = ob_get_contents();//获取php文件里面的内容
$fp = fopen("admin.html", "w");//创建tt.html静态文件
fwrite($fp, $str);//将字符串$str写入tt.html中,tt.html 即为静态页文件
ob_end_clean();//清空缓冲区内容并关闭缓冲区
echo "success";
?>

2.生成静态首页文件

为了方便生成静态页面,可以把生成静态页面的代码写入到一个函数中,createhtml()中,该函数接受两个参数:$sourcePage 是将执行的动态文件URL地址,$targetPage是生成的静态文件的文件名。

 <?php
header("Content-type: text/html; charset=UTF-8");
function createhtml ($sourcePage,$targetPage){
ob_start();
$str = file_get_contents($sourcePage);
$fp = fopen($targetPage, "w")or die("打开文件".$targetPage."出错");
fwrite($fp, $str); //将字符串$str 写入目标文件中
ob_end_clean(); //清空缓存区内容并且关闭缓冲区
echo "success";
fclose($fp);
}
createhtml("http://localhost/php/news/admin.php","index1.html");
?>
   file_get_contents(string $url)函数 ,如果该文件是动态网页文件,该参数必须是绝对URL地址,如不是相对URL地址。因为要执行一个动态网页文件,只能在浏览器地址栏中输入该文件的绝对URL,而不能输入相对的URL,否则该函数会把php文件的源代码(而不是执行后生成的HTML代码)作为返回的字符串。