程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 一個php生成html類程序

一個php生成html類程序

編輯:關於PHP編程

來這裡直接用構造函數來實現的,考慮到會有很多的生成靜態頁的進程,還是改為函數調用,本處保留備用,在類中template()替換成templateHtml()即可實現,

來這裡直接用構造函數來實現的,考慮到會有很多的生成靜態頁的進程,還是改為函數調用,本處保留備用,在類中template()替換成templatehtml()即可實現,

*/

class template
{
var $temp;               //讀取的模板頁文件名(包含路徑)
var $html;               //要生成的html文件名(包含路徑)
var $err;                //錯誤編號
var $test;               //數據流
var $arr;                 //要替換的數組 模式(鍵名->模板標簽 , 鍵值->替換內容)

  function template()
   {
   $this->temp="";              
      $this->html="";              
      $this->err=0;               
      $this->test="";              
   }

   function templatehtml($temp,$html,$arr)
   {
  $err=$this->chkfile($temp);
  if((int)$err==0)
  {
         $fp=fopen($temp,"r");                       //只讀方式打開模板頁
      $test=fread($fp,filesize($temp));          //讀取模板頁的數據流
      $test=$this->arr_replace($arr,$test);             //替換文件    
         $err=$this->writefile($html,$test);               //生成靜態頁
  }
      echo "由模板頁 ".$temp." 生成 ".$html.$this->error($err);
   return;
   }    

/*
*判斷文件是否存在
*返回錯誤提示
*/

function chkfile($file)
{
 if (file_exists($file))
 {
  return 0;
 }
 return 1;
}
  
/*
*根據數組文件內容,替換數據流  模式(鍵名->模板標簽 , 鍵值->替換內容)
*返回數據流
*參數$arr:數組
*參數$test :數據流
*/ 
   function arr_replace($arr,$test)
   {
      $ss=$test;
      foreach ($arr as $key => $value)
   {
   $ss= str_replace($key,$value,$ss);
   }
      return $ss;
   }
    
/*
*將數據流,寫入到文件中
*返回執行狀態
*參數$html:要生成的html文件
*參數$test :數據流
*/    
   function writefile($html,$test)
   {
      $stat=2;
      if($this->chkfile($html)==0)  //判斷文件是否存在
   {
      $stat=0;                   //已經存在返回0
   }
  
      if($f=fopen($html,"w"))      //寫入方式打開文件,不存在則創建
   {
       fputs($f,$test);
    fclose($f);
       $stat=0;                //寫入成功返回0
   }
   else
   {
       $stat=2;               //寫入失敗返回2
   }
      return $stat;
   }
/*
*錯誤提示
*返回錯誤提示
*參數$err:錯誤編號
*參數$file :錯誤文件
*/   
function error($err)
{
    $message="";
 switch((int)$err)
 {
 case 0 :
  $message=" 靜態頁生成成功";
  break;
 case 1 :
  $message=" 模板頁打開失敗,請檢查是否存在";
  break;
 case 2 :
  $message=" 文件生成失敗,請檢查目錄權限";
  break;
 default:
  $message=" 未知錯誤";
 }
 return $message;
}
 
/*
*
*主要用來讀取模板頁,返回數據流  (比如top,foot公用文件,)
*參數$file :模板頁路徑
*/
 
function readhtml($file)
{
   $test="";
   $err=$this->chkfile($file);
   if($err==0)
   {
      $fp=fopen($file,"r");                       //只讀方式打開模板頁
      $test=fread($fp,filesize($file));          //讀取模板頁的數據流
   }
   else
   {
      $test=$file.$this->error($err);
   }
  
   return $test;

}

/*
*
*主要用來刪除已生成的文件,不返回
*參數$file :文件路徑
*/

function delete_file($file)
{
    if (file_exists($file))
    {
        $delete = chmod ($file, 0777);
        $delete = unlink($file);
        if(file_exists($file))
        {
            $filesys = eregi_replace("/","",$file);
            $delete = system("del $filesys");
            clearstatcache();
            if(file_exists($file))
            {
                $delete = chmod ($file, 0777);
                $delete = unlink($file);
                $delete = system("del $filesys");
            }
        }
        clearstatcache();
    }
}
  
}

/*
調用方法

demo.html的代碼
<html>
<head><title>{title}</title></head>
<body>{text}</body>
<html>


$sc=new template();
//$sc=new template($tmp,$filename,$arr);   ()

$tmp="../template/temp.php教程";    //模板頁
$filename="test.html";          //生成頁
$foot="../foot.html";           //包含的底文件,頭文件同理

$arr=array();
$arr["{title}"]="新標題";
$arr["{text}"]="新內容";
$arr["{foot}"]=$sc->readhtml($foot);

 

$sc->templatehtml($tmp,$filename,$arr);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved