用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

php生成html静态页面的二种方法

时间:2015-01-23  来源:西部数据  作者:西部数据

在我之前所见的文章中要不是用代码堆砌空间就是用高手与高手交流用的语言让新人望而生却,因此本文尽量把整体思路说得详尽点.

两种方法简单说明如下:

一,利用PHP的输出控制函数(Output Control)得到静态页面字符串,再写入到新的文件中.

使用说明:

1、实例化,代码如下:

$cache = new Cache();

2、设置缓存时间和缓存目录

$cache = new Cache(60,'/any_other_path/');

第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置,默认情况下,缓存时间是 3600 秒,缓存目录是 cache/.

3、读取缓存,代码如下:

  1. $value = $cache->get('data_key');4、写入缓存 
  2.  
  3. $value = $cache->put('data_key''data_value');完整实例: 
  4.  
  5. $cache = new Cache(); 
  6.  
  7. //从缓存从读取键值 $key 的数据 
  8. $values = $cache->get($key); 
  9.  
  10. //如果没有缓存数据 
  11. if ($values == false) { 
  12.  //insert code here... 
  13.  //写入键值 $key 的数据 
  14.  $cache->put($key$values); 
  15. else { 
  16.  //insert code here... 

Cache.class.php

  1. <?php 
  2. class Cache { 
  3.  private $cache_path;//path for the cache 
  4.  private $cache_expire;//seconds that the cache expires 
  5.  
  6.  //cache constructor, optional expiring time and cache path 
  7.  public function Cache($exp_time=3600,$path="cache/"){ 
  8.   $this->cache_expire=$exp_time
  9.   $this->cache_path=$path
  10.  } 
  11.  
  12.  //returns the filename for the cache 
  13.  private function fileName($key){ 
  14.   return $this->cache_path.md5($key); 
  15.  } 
  16.  
  17.  //creates new cache files with the given data, $key== name of the cache, data the info/values to store 
  18.  public function put($key$data){ 
  19.   $values = serialize($data); 
  20.   $filename = $this->fileName($key); 
  21.   $file = fopen($filename'w'); 
  22.      if ($file){//able to create the file 
  23.          fwrite($file$values); 
  24.          fclose($file); 
  25.      } 
  26.      else return false; 
  27.  } 
  28.  
  29.  //returns cache for the given key 
  30.  public function get($key){ 
  31.   $filename = $this->fileName($key); 
  32.   if (!file_exists($filename) || !is_readable($filename)){//can't read the cache 
  33.    return false; 
  34.   } 
  35.   if ( time() < (filemtime($filename) + $this->cache_expire) ) {//cache for the key not expired 
  36.    $file = fopen($filename"r");// read data file 
  37.          if ($file){//able to open the file 
  38.              $data = fread($filefilesize($filename)); 
  39.              fclose($file); 
  40.              return unserialize($data);//return the values 
  41.          }//开源代码phpfensi.com 
  42.          else return false; 
  43.   } 
  44.   else return false;//was expired you need to create new 
  45.   } 
  46. ?> 

二,利用模板生成

什么是模板?如果大家使用过Dreamwerver中的“另存为模板”就应该知道模板是用来统一风格的东西,它只让你修改页面的某一部分,当然这“某一部分”是由你来确定的,本文在这说的模板也就是这个意思,此外,PHP模板技术还包括phplib、smarty等等,这不是本文所说内容了.

把模板的概念结合本文再说得具体一点就是:美工先做好一个页面,然后我们把这个页面当作模板(要注意的是这个模板就没必要使用EditRegion3这样的代码了,这种代码是Dreamwerver为了方便自己设计而弄的标识),把这个模板中我们需要改变的地方用一个与HTML可以区分的字符代替,如“{title}”、“[title]”。在生成静态页面的时候只需要把数据和这些字符串替换即可。这就是模板的含义了.

步骤:

1.新建一个php页面和一个html页面[模板页];注:如果是从数据库调用数据,则将数据以数组的形式保存,然后循环生成;

2.在php页面,打开html页面->读取html页面的内容->替换参数->新建(打开)一个新的html页面->将替换的内容写入新文件中->关闭新文件->生成成功;代码如下:

  1. $open = fopen("template.htm","r"); //打开模板文件 
  2. $content = fread($open,filesize("template.htm")); //读取模板文件内容 
  3. //print_r($content); 
  4. $content = str_replace("{title}","测试标题",$content);//替换 
  5. $content = str_replace("{contents}","测试内容",$content); 
  6.  
  7. $newtemp = fopen("1.htm","w");//生成,用写入方式打开一个不存在(新)的页面 
  8. fwrite($newtemp,$content);//将刚刚替换的内容写入新文件中 
  9. fclose($newtemp); 
  10. echo "生成"

php批量生成html测试,代码如下:

  1. //假设从数据库中调的数据存放在二维数组$arr中 
  2. $arr = array(array("新闻标题一","新闻内容一"),array("新闻标题二","新闻内容二"));  
  3.  
  4. foreach($arr as $key=>$value){ 
  5.  $title = $value[0]; 
  6.  $contents = $value[1]; 
  7.  //echo $title.''.$contents.''; 
  8.  $path = $key.'.html'
  9.  $open = fopen("template.htm","r"); //打开模板文件 
  10.  $handle = fread($open,filesize("template.htm")); //读取模板文件内容 
  11.  
  12.  $content = str_replace("{title}",$title,$handle);//替换 
  13.  $content = str_replace("{contents}",$contents,$handle); 
  14.  
  15.  $newtemp = fopen($path,"w");//用写入方式打开一个不存在(新)的页面 
  16.  fwrite($newtemp,$content);//将刚刚替换的内容写入新文件中 
  17.  fclose($newtemp); 
  18.  echo "生成"
来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门