一套功能强大的PHP网站系统,生成静态的HTML文件是必需的,以下是为需要生成PHP静态页面而编写的一个类文件,在需要生成静态文件的地方,你只需调用这个类即可,类中定义了一些生成HTML文件所需的功能,需要的请仔细阅读这个类代码吧。
001 | <?php |
002 | class html |
003 | { |
004 | var $dir ; //dir for the htmls(without/) |
005 | var $rootdir ; //root of html files(without/):html |
006 | var $name ; //html文件存放路径 |
007 | var $dirname ; //指定的文件夹名称 |
008 | var $url ; //获取html文件信息的来源网页地址 |
009 | var $time ; //html文件信息填加时的时间 |
010 | var $dirtype ; //目录存放方式:year,month,,,, |
011 | var $nametype ; //html文件命名方式:name |
012 | function html( $nametype = 'name' , $dirtype = 'year' , $rootdir = 'html' ) |
013 | { |
014 | $this ->setvar( $nametype , $dirtype , $rootdir ); |
015 | } |
016 | function setvar( $nametype = 'name' , $dirtype = 'year' , $rootdir = 'html' ) |
017 | { |
018 | $this ->rootdir= $rootdir ; |
019 | $this ->dirtype= $dirtype ; |
020 | $this ->nametype= $nametype ; |
021 | } |
022 | function createdir( $dir = '' ) |
023 | { |
024 | $this ->dir= $dir ? $dir : $this ->dir; |
025 | if (! is_dir ( $this ->dir)) |
026 | { |
027 | $temp = explode ( '/' , $this ->dir); |
028 | $cur_dir = '' ; |
029 | for ( $i =0; $i < count ( $temp ); $i ++) |
030 | { |
031 | $cur_dir .= $temp [ $i ]. '/' ; |
032 | if (! is_dir ( $cur_dir )) |
033 | { |
034 | @ mkdir ( $cur_dir ,0777); |
035 | } |
036 | } |
037 | } |
038 | } |
039 | function getdir( $dirname = '' , $time =0) |
040 | { |
041 | $this ->time= $time ? $time : $this ->time; |
042 | $this ->dirname= $dirname ? $dirname : $this ->dirname; |
043 | switch ( $this ->dirtype) |
044 | { |
045 | case 'name' : |
046 | if ( empty ( $this ->dirname)) |
047 | $this ->dir= $this ->rootdir; |
048 | else |
049 | $this ->dir= $this ->rootdir. '/' . $this ->dirname; |
050 | break ; |
051 | case 'year' : |
052 | $this ->dir= $this ->rootdir. '/' . date ( "Y" , $this ->time); |
053 | break ; |
054 | case 'month' : |
055 | $this ->dir= $this ->rootdir. '/' . date ( "Y-m" , $this ->time); |
056 | break ; |
057 | case 'day' : |
058 | $this ->dir= $this ->rootdir. '/' . date ( "Y-m-d" , $this ->time); |
059 | break ; |
060 | } |
061 | $this ->createdir(); |
062 | return $this ->dir; |
063 | } |
064 | function geturlname( $url = '' ) |
065 | { |
066 | $this ->url= $url ? $url : $this ->url; |
067 | $filename = basename ( $this ->url); |
068 | $filename = explode ( "." , $filename ); |
069 | return $filename [0]; |
070 | } |
071 | function geturlquery( $url = '' ) |
072 | { |
073 | $this ->url= $url ? $url : $this ->url; |
074 | $durl = parse_url ( $this ->url); |
075 | $durl = explode ( "&" , $durl [query]); |
076 | foreach ( $durl as $surl ) |
077 | { |
078 | $gurl = explode ( "=" , $surl ); |
079 | $eurl []= $gurl [1]; |
080 | } |
081 | return join( "_" , $eurl ); |
082 | } |
083 | function getname( $url = '' , $time =0, $dirname = '' ) |
084 | { |
085 | $this ->url= $url ? $url : $this ->url; |
086 | $this ->dirname= $dirname ? $dirname : $this ->dirname; |
087 | $this ->time= $time ? $time : $this ->time; |
088 | $this ->getdir(); |
089 | switch ( $this ->nametype) |
090 | { |
091 | case 'name' : |
092 | $filename = $this ->geturlname(). '.htm' ; |
093 | $this ->name= $this ->dir. '/' . $filename ; |
094 | break ; |
095 | case 'time' : |
096 | $this ->name= $this ->dir. '/' . $this ->time. '.htm' ; |
097 | break ; |
098 | case 'query' : |
099 | $this ->name= $this ->dir. '/' . $this ->geturlquery(). '.htm' ; |
100 | break ; |
101 | case 'namequery' : |
102 | $this ->name= $this ->dir. '/' . $this ->geturlname(). '-' . $this ->geturlquery(). '.htm' ; |
103 | break ; |
104 | case 'nametime' : |
105 | $this ->name= $this ->dir. '/' . $this ->geturlname(). '-' . $this ->time. '.htm' ; |
106 | break ; |
107 | } |
108 | return $this ->name; |
109 | } |
110 | function createhtml( $url = '' , $time =0, $dirname = '' , $htmlname = '' ) |
111 | { |
112 | $this ->url= $url ? $url : $this ->url; |
113 | $this ->dirname= $dirname ? $dirname : $this ->dirname; |
114 | $this ->time= $time ? $time : $this ->time; |
115 | if ( empty ( $htmlname )) |
116 | $this ->getname(); |
117 | else |
118 | $this ->name= $dirname . '/' . $htmlname ; |
119 | $content =file( $this ->url) or die ( "打开URL失败: " . $this ->url. " !" ); |
120 | $content =join( "" , $content ); |
121 | $fp =@ fopen ( $this ->name, "w" ) or die ( "打开文件失败: " . $this ->name. " !" ); |
122 | if (@fwrite( $fp , $content )) |
123 | return true; |
124 | else |
125 | return false; |
126 | fclose( $fp ); |
127 | } |
128 | //以name为名字生成html |
129 | function deletehtml( $url = '' , $time =0, $dirname = '' ) |
130 | { |
131 | $this ->url= $url ? $url : $this ->url; |
132 | $this ->time= $time ? $time : $this ->time; |
133 | $this ->getname(); |
134 | if (@unlink( $this ->name)) |
135 | return true; |
136 | else |
137 | return false; |
138 | } |
139 | /** |
140 | * function::deletedir() |
141 | * 删除目录 |
142 | * @param $file 目录名(不带/) |
143 | * @return |
144 | */ |
145 | function deletedir( $file ) |
146 | { |
147 | if ( file_exists ( $file )) |
148 | { |
149 | if ( is_dir ( $file )) |
150 | { |
151 | $handle =opendir( $file ); |
152 | while (false!==( $filename =readdir( $handle ))) |
153 | { |
154 | if ( $filename != "." && $filename != ".." ) |
155 | $this ->deletedir( $file . "/" . $filename ); |
156 | } |
157 | closedir ( $handle ); |
158 | rmdir ( $file ); |
159 | return true; |
160 | } else { |
161 | unlink( $file ); |
162 | } |
163 | } |
164 | } |
165 | } |
166 | ?> |