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代码)作为返回的字符串。