欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-01-23 20:55:40
...
  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文件的三种方法