php生成html简单代码实例

php生成html简单代码实例


实例一

原理剖析:

当我们制作数据量大以及访问人数多的网站时往往会采用动态生成html静态页面的方法,这样做的好处是用户直接访问静态页面,减轻了服务器的负担,又可以对搜索引擎更加友好,可谓一举两得;

其原理是先读入模板文件,然后按照一定的规则替换模板中的标签,具体实现如下:


index.tpl 模板文件代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>{title}</title>  </head>  <body>  {content}   </body>  </html>



index.php 服务端代码:

<?php   $data = array('id' => 1, 'title' => '这里是标题', 'content' => '这里是内容');   $tpl = 'index.tpl';   $content = file_get_contents($tpl);     //读取模板文件的内容   $content = str_replace('{title}',$data['title'],$content);  //用具体数据来替换模板标签   $content = str_replace('{content}',$data['content'],$content);   file_put_contents($data['id'].'.html',$content);   //将替换后的内容写进html文件中   ?>



这里是从数组中直接读取数据,实际过程中可以将数据库读取的数据保存在数组中,然后用循环的方法实现替换就行了。

 

实例二



//单页生成html页<?phpob_start();   //开启服务器缓存include_once '../gsjj.php'; $ctx=ob_get_contents();     //获取缓存ob_end_clean();     //清空缓存 $fh=fopen("../gsjj.html","w+");  fwrite($fh,$ctx);    //写入html,生成htmlfclose($fh);  echo "<script>alert('文件生成成功');location.href='makehtml.php';</script>";?>//新闻列表带分页生成html页<?php$fp = fopen ("../new.html","r");  //只读方式打开 new.html模板,将文件指针指向文件头$content = fread ($fp,filesize ("../new.html"));    //读取整个文件内容$list = '';$num=0;$sql= "select * from news ";$result=mysql_query($sql);while($row=mysql_fetch_assoc($result)){    //查询entries表,取出列表项$num++;if($row["url"]==""){$list .= "<ul class='news' id='ul'><li><a href='".$row["tid"].".html'>".$row['title']."</a></li></ul>";}else{$list .= "<ul class='news' id='ul'><li><a href='".$row["url"]."' target='_blank'>".$row['title']."</a></li></ul>";}}$content= str_replace ("{articletable}",$list,$content);//生成列表结束// echo $content;$filename = "../news.html";$filename1 = "../new.html";$handle = fopen ($filename,"w"); //打开文件指针,创建文件/* 检查文件是否被创建且可写*/if (!is_writable ($filename)){die ("文件:".$filename."不可写,请检查其属性后重试!");}if (!fwrite ($handle,$content)){ //将信息写入文件die ("生成文件".$filename."失败!");}fclose ($handle); //关闭指针die ("Create file ".$filename." success !");?>


模板页面 new.html

<div id="mydiv">{articletable}</div><div id="changpage" style="text-align:center; color:#333333; margin-top:50px"></div><script>var obj,j;var page=0;var nowPage=0;//当前页var listNum=40;//每页显示<ul>数var PagesLen;//总页数var PageNum=500;//分页链接接数(5个)onload=function(){obj=document.getElementById("mydiv").getElementsByTagName("ul");j=obj.lengthPagesLen=Math.ceil(j/listNum);upPage(0)}function upPage(p){nowPage=p//内容变换for (var i=0;i<j;i++){obj[i].style.display="none"}for (var i=p*listNum;i<(p+1)*listNum;i++){if(obj[i])obj[i].style.display="block"}//分页链接变换strS='<a href="###" onclick="upPage(0)" style="color:#000000">首页</a> 'var PageNum_2=PageNum%2==0?Math.ceil(PageNum/2)+1:Math.ceil(PageNum/2)var PageNum_3=PageNum%2==0?Math.ceil(PageNum/2):Math.ceil(PageNum/2)+1var strC="",startPage,endPage;if (PageNum>=PagesLen) {startPage=0;endPage=PagesLen-1}else if (nowPage<PageNum_2){startPage=0;endPage=PagesLen-1>PageNum?PageNum:PagesLen-1}//首页else {startPage=nowPage+PageNum_3>=PagesLen?PagesLen-PageNum-1: nowPage-PageNum_2+1;var t=startPage+PageNum;endPage=t>PagesLen?PagesLen-1:t}for (var i=startPage;i<=endPage;i++){if (i==nowPage)strC+='<a href="###" style="color:red;font-weight:700;" onclick="upPage('+i+')">'+(i+1)+'</a> 'else strC+='<a href="###" onclick="upPage('+i+')">'+(i+1)+'</a> '}strE=' <a href="###" onclick="upPage('+(PagesLen-1)+')" style="color:#000000">尾页</a> 'strE2=nowPage+1+"/"+PagesLen+"页"+" 共"+j+"条"document.getElementById("changpage").innerHTML=strS+strC+strE+strE2}</script></div>



//后台添加文章生成 html  <?php     mt_srand((double)microtime()*1000000);          $randval = mt_rand(1, 99999);          $tmp_num = $randval;           $title=$_POST['title'];          $gjc=$_POST['gjc'];          $content=trim($_POST['content']);          $bz=$_POST['bz'];          $url=$_POST['url'];          $shijian=date("Y-m-d");          $mobanpath=$root."../newxinxi.html";          $fp=fopen($mobanpath,"rb");          $news_contents=fread($fp,filesize($mobanpath));          $news_contents=str_replace("{-news_title-}",$title,$news_contents);          $news_contents=str_replace("{-news_gjc-}",$gjc,$news_contents);          $news_contents=trim(str_replace("{-content-}",$content,$news_contents));          $news_contents=str_replace("{-bz-}",$bz,$news_contents);          $news_contents=str_replace("{-shijian-}",$shijian,$news_contents);          $news_contents=str_replace("{-url-}",$url,$news_contents);          $news_contents=str_replace("{-shijian-}",$shijian,$news_contents);          $list = '';          $num=1;          $sql= "select * from news order by id desc limit 0,1";          $result=mysql_query($sql);          while($row=mysql_fetch_assoc($result))          {//查询entries表,取出列表项          /*$num=$nmu+1;  */          $id=$row["id"]+1;                       $filename="".$tmp_num.".html";                          }              $num++;          $newspath=$root."../".$filename;                  $fp1=fopen($newspath,"w");                fwrite($fp1,$news_contents,strlen($news_contents));                    $sql="insert into news (title,shijian,content,gjc,bz,url,tid) values ('$_POST[title]','$shijian','$_POST[content]','$_POST[gjc]','$_POST[bz]','$_POST[url]','$tmp_num')";          $result=mysql_query($sql);          echo "<script>";          echo "alert('新闻添加成功!');";          echo "window.location=('news.php');";          echo "</script>";           ?>



其他——php生成html的类

<?php  class html  {      var $dir; //dir for the htmls(without/)       var $rootdir; //root of html files(without/):html       var $name; //html文件存放路径       var $dirname; //指定的文件夹名称       var $url; //获取html文件信息的来源网页地址       var $time; //html文件信息填加时的时间       var $dirtype; //目录存放方式:year,month,,,,       var $nametype; //html文件命名方式:name                   function html($nametype = 'name', $dirtype = 'year', $rootdir = 'html')      {          $this -> setvar($nametype, $dirtype, $rootdir);          }            function setvar($nametype = 'name', $dirtype = 'year', $rootdir = 'html')      {          $this -> rootdir = $rootdir;          $this -> dirtype = $dirtype;          $this -> nametype = $nametype;          }            function createdir($dir = '')      {          $this -> dir = $dir?$dir:$this -> dir;                    if (!is_dir($this -> dir))              {              $temp = explode('/', $this -> dir);              $cur_dir = '';              for($i = 0;$i < count($temp);$i++)              {                  $cur_dir .= $temp[$i] . '/';                  if (!is_dir($cur_dir))                      {                      @mkdir($cur_dir, 0777);                      }                  }              }          }            function getdir($dirname = '', $time = 0)      {          $this -> time = $time?$time:$this -> time;          $this -> dirname = $dirname?$dirname:$this -> dirname;                    switch($this -> dirtype)          {          case 'name':              if(empty($this -> dirname))                  $this -> dir = $this -> rootdir;              else                  $this -> dir = $this -> rootdir . '/' . $this -> dirname;              break;          case 'year':              $this -> dir = $this -> rootdir . '/' . date("Y", $this -> time);              break;                    case 'month':              $this -> dir = $this -> rootdir . '/' . date("Y-m", $this -> time);              break;                    case 'day':              $this -> dir = $this -> rootdir . '/' . date("Y-m-d", $this -> time);              break;              }                    $this -> createdir();                    return $this -> dir;          }            function geturlname($url = '')      {          $this -> url = $url?$url:$this -> url;                    $filename = basename($this -> url);          $filename = explode(".", $filename);          return $filename[0];          }            function geturlquery($url = '')      {          $this -> url = $url?$url:$this -> url;                    $durl = parse_url($this -> url);          $durl = explode("&", $durl[query]);          foreach($durl as $surl)          {              $gurl = explode("=", $surl);              $eurl[] = $gurl[1];              }          return join("_", $eurl);          }            function getname($url = '', $time = 0, $dirname = '')      {          $this -> url = $url?$url:$this -> url;          $this -> dirname = $dirname?$dirname:$this -> dirname;          $this -> time = $time?$time:$this -> time;                    $this -> getdir();                    switch($this -> nametype)          {          case 'name':              $filename = $this -> geturlname() . '.htm';              $this -> name = $this -> dir . '/' . $filename;              break;                    case 'time':              $this -> name = $this -> dir . '/' . $this -> time . '.htm';              break;                    case 'query':              $this -> name = $this -> dir . '/' . $this -> geturlquery() . '.htm';              break;                    case 'namequery':              $this -> name = $this -> dir . '/' . $this -> geturlname() . '-' . $this -> geturlquery() . '.htm';              break;                    case 'nametime':              $this -> name = $this -> dir . '/' . $this -> geturlname() . '-' . $this -> time . '.htm';              break;                            }          return $this -> name;          }            function createhtml($url = '', $time = 0, $dirname = '', $htmlname = '')      {          $this -> url = $url?$url:$this -> url;          $this -> dirname = $dirname?$dirname:$this -> dirname;          $this -> time = $time?$time:$this -> time;          // 上面保证不重复地把变量赋予该类成员          if(empty($htmlname))              $this -> getname();          else              $this -> name = $dirname . '/' . $htmlname; //得到name                               $content = file($this -> url) or die("Failed to open the url " . $this -> url . " !");;                    // /////////////关键步---用file读取$this->url                    $content = join("", $content);          $fp = @fopen($this -> name, "w") or die("Failed to open the file " . $this -> name . " !");          if(@fwrite($fp, $content))              return true;          else              return false;          fclose($fp);          }      // ///////////////以name为名字生成html      function deletehtml($url = '', $time = 0, $dirname = '')      {          $this -> url = $url?$url:$this -> url;          $this -> time = $time?$time:$this -> time;                    $this -> getname();                    if(@unlink($this -> name))              return true;          else              return false;          }            /**      * function::deletedir()       * 删除目录      *       * @param $file 目录名(不带/)      * @return       */      function deletedir($file)      {          if(file_exists($file))              {              if(is_dir($file))                  {                  $handle = opendir($file);                  while(false !== ($filename = readdir($handle)))                  {                      if($filename != "." && $filename != "..")                          $this -> deletedir($file . "/" . $filename);                      }                  closedir($handle);                  rmdir($file);                  return true;                  }else{                  unlink($file);                  }              }          }            }  ?>