当前位置:Gxlcms > PHP教程 > php写的一个生成静态页面的类

php写的一个生成静态页面的类

时间:2021-07-01 10:21:17 帮助过:35人阅读

  1. /**

  2. 功能:生成静态页面
  3. 整理:脚本学堂 bbs.it-home.org
  4. 日期:2013-2-16
  5. */
  6. class html
  7. {
  8. var $dir; //dir for the htmls(without/)
  9. var $rootdir; //root of html files(without/):html
  10. var $name; //html文件存放路径
  11. var $dirname; //指定的文件夹名称
  12. var $url; //获取html文件信息的来源网页地址
  13. var $time; //html文件信息填加时的时间
  14. var $dirtype; //目录存放方式:year,month,,,,
  15. var $nametype; //html文件命名方式:name

  16. function html($nametype='name',$dirtype='year',$rootdir='html')

  17. {
  18. $this->setvar($nametype,$dirtype,$rootdir);
  19. }

  20. function setvar($nametype='name',$dirtype='year',$rootdir='html')

  21. {
  22. $this->rootdir=$rootdir;
  23. $this->dirtype=$dirtype;
  24. $this->nametype=$nametype;
  25. }

  26. function createdir($dir='')

  27. {
  28. $this->dir=$dir?$dir:$this->dir;

  29. if (!is_dir($this->dir))

  30. {
  31. $temp = explode('/',$this->dir);
  32. $cur_dir = '';
  33. for($i=0;$i{
  34. $cur_dir .= $temp[$i].'/';
  35. if (!is_dir($cur_dir))
  36. {
  37. @mkdir($cur_dir,0777);
  38. }
  39. }
  40. }
  41. }

  42. function getdir($dirname='',$time=0)

  43. {
  44. $this->time=$time?$time:$this->time;
  45. $this->dirname=$dirname?$dirname:$this->dirname;

  46. switch($this->dirtype)

  47. {
  48. case 'name':
  49. if(empty($this->dirname))
  50. $this->dir=$this->rootdir;
  51. else
  52. $this->dir=$this->rootdir.'/'.$this->dirname;
  53. break;
  54. case 'year':
  55. $this->dir=$this->rootdir.'/'.date("Y",$this->time);
  56. break;

  57. case 'month':

  58. $this->dir=$this->rootdir.'/'.date("Y-m",$this->time);
  59. break;

  60. case 'day':

  61. $this->dir=$this->rootdir.'/'.date("Y-m-d",$this->time);
  62. break;
  63. }

  64. $this->createdir();

  65. return $this->dir;

  66. }

  67. function geturlname($url='')

  68. {
  69. $this->url=$url?$url:$this->url;

  70. $filename=basename($this->url);

  71. $filename=explode(".",$filename);
  72. return $filename[0];
  73. }

  74. function geturlquery($url='')

  75. {
  76. $this->url=$url?$url:$this->url;

  77. $durl=parse_url($this->url);

  78. $durl=explode("&",$durl[query]);
  79. foreach($durl as $surl)
  80. {
  81. $gurl=explode("=",$surl);
  82. $eurl[]=$gurl[1];
  83. }
  84. return join("_",$eurl);
  85. }

  86. function getname($url='',$time=0,$dirname='')

  87. {
  88. $this->url=$url?$url:$this->url;
  89. $this->dirname=$dirname?$dirname:$this->dirname;
  90. $this->time=$time?$time:$this->time;

  91. $this->getdir();

  92. switch($this->nametype)

  93. {
  94. case 'name':
  95. $filename=$this->geturlname().'.htm';
  96. $this->name=$this->dir.'/'.$filename;
  97. break;

  98. case 'time':

  99. $this->name=$this->dir.'/'.$this->time.'.htm';
  100. break;

  101. case 'query':

  102. $this->name=$this->dir.'/'.$this->geturlquery().'.htm';
  103. break;

  104. case 'namequery':

  105. $this->name=$this->dir.'/'.$this->geturlname().'-'.$this->geturlquery().'.htm';
  106. break;

  107. case 'nametime':

  108. $this->name=$this->dir.'/'.$this->geturlname().'-'.$this->time.'.htm';
  109. break;

  110. }

  111. return $this->name;
  112. }

  113. function createhtml($url='',$time=0,$dirname='',$htmlname='')

  114. {
  115. $this->url=$url?$url:$this->url;
  116. $this->dirname=$dirname?$dirname:$this->dirname;
  117. $this->time=$time?$time:$this->time;
  118. //上面保证不重复地把变量赋予该类成员
  119. if(empty($htmlname))
  120. $this->getname();
  121. else
  122. $this->name=$dirname.'/'.$htmlname; //得到name
  123. $content=file($this->url) or die("Failed to open the url ".$this->url." !");;

  124. ///////////////关键步---用file读取$this->url

  125. $content=join("",$content);
  126. $fp=@fopen($this->name,"w") or die("Failed to open the file ".$this->name." !");
  127. if(@fwrite($fp,$content))
  128. return true;
  129. else
  130. return false;
  131. fclose($fp);
  132. }
  133. /////////////////以name为名字生成html
  134. function deletehtml($url='',$time=0,$dirname='')
  135. {
  136. $this->url=$url?$url:$this->url;
  137. $this->time=$time?$time:$this->time;

  138. $this->getname();

  139. if(@unlink($this->name))

  140. return true;
  141. else
  142. return false;
  143. }

  144. /**

  145. * function::deletedir()
  146. * 删除目录
  147. * @param $file 目录名(不带/)
  148. * @return
  149. */
  150. function deletedir($file)
  151. {
  152. if(file_exists($file))
  153. {
  154. if(is_dir($file))
  155. {
  156. $handle =opendir($file);
  157. while(false!==($filename=readdir($handle)))
  158. {
  159. if($filename!="."&&$filename!="..")
  160. $this->deletedir($file."/".$filename);
  161. }
  162. closedir($handle);
  163. rmdir($file);
  164. return true;
  165. }else{
  166. unlink($file);
  167. }
  168. }
  169. }
  170. }
  171. ?>

您可能感兴趣的文章: php生成静态页面的三种方法与代码详解 php生成静态页面函数(php2html)的例子 php生成静态页面的方法(三个函数) 细说php生成静态文件之模板与缓存 虚拟主机上定时自动生成静态页面的方法 php生成静态文件的二种方法 php生成静态页面的详细教程 php生成静态html文件的原理分析 smarty生成静态页面的方法 了解php生成静态HTML文件的原理 PHP生成静态页面的方法 php生成静态html文件的三种方法

人气教程排行