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

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

 

转载于:https://www.cnblogs.com/xs-yqz/p/4957485.html

你可能感兴趣的:(php)