




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在php中实现动转静生成纯静态页面的方法不管用什么方法,原理都是一样的。就是用程序读取相应的数据来替换模版中的变量,然后生成静态页。php中主要用到的就是要用到fread()和fwirte()。而静态页面生成了之后,就会牵扯到修改的问题。这里可以用到正则匹配的方法来替换模版中改变的部 位。推荐的方法是直接把原来生成的模版砍掉,重新生成,呵呵,真正的一了百了。还需要说明的一点就是,这种生成静态页面的方法一般都用于那些变化不是很频繁的页面,比如信息的最终页面。而针对列表页,如果信息更新不是很频繁的 话,也是可取的。现在网上流行好多可以生成静态页面的blog或者论坛程序,都是通过手动点击后台“生成html页”的按钮来“半自动”生成html的。 而对一些信息量非常大的门户网站,则行不通。因为静态页之所以叫“静态”,是因为其不可自动改变。如果信息列表每天更新100次,那么静态的列表页就要重 新生成100次。如果我有10个这样的栏目,那想想也够吐血的了。好了,闲话少说,现在来看看实际的程序演示:first:是一个利用ob函数来做的咚咚,代码比较简单,效率相对也高一些。PHP代码查看源代码 打印帮助因为就算要生成静态页面,动态读取那部分也是要保留的,把数据插入数据库后,把url传递给readfile函数,然后读入缓存,fwrite一下 就可以生成静态页面,这种作法。代码行数最少,效率最高。/post/186/是一个裸页,也就是单纯的内容,没有头,尾,菜单。这样才能比较自由的定制自己的模版myfile.html。如果仅仅是要求生成静态页的话。PHP代码查看源代码 打印帮助ob_start(); readfile(/post/186); $string = ob_get_flush(); $myfile = fopen(myfile.html,w); fwrite($myfile,$string); ob_clean();就可以over了second:普通生成静态html页。这种作法就是按部就班的来做,fread进来页面,然后str_replace替换首先是创建最终内容页:PHP代码查看源代码 打印帮助$title = /post/186 | phphis blog; $file = phphis blog-是一个以php+jquery为中心,面向软件开发者、程序爱好者的开源技术型博客。; $fp = fopen (temp.html,r); $content = fread ($fp,filesize (temp.html); $content = str_replace (file,$file,$content); $content = str_replace (title,$title,$content); $filename = test/test.html; $handle = fopen ($filename,w); /打开文件指针,创建文件 /* 检查文件是否被创建且可写 */if (!is_writable ($filename) die (文件:.$filename.不可写,请检查其属性后重试!); if (!fwrite ($handle,$content) /将信息写入文件 die (生成文件.$filename.失败!); fclose ($handle); /关闭指针 die (创建文件.$filename.成功!);这一步比较简单。只是单纯的变量替换即可。如果要生成静态的列表页面的话,原理也是一样,用程序来生成文章列表,把它当成一个大的变量,替换模版中 的变量,列表的翻页页是如此。当然,如果有信息更新的话,列表翻页也是要重新生成的。PHP代码查看源代码 打印帮助?php $title = /post/186; $file = phphis blog-是一个以php+jquery为中心,面向软件开发者、程序爱好者的开源技术型博客。; $fp = fopen (temp.html,r); $content = fread ($fp,filesize (temp.html); $content = str_replace (file,$file,$content); $content = str_replace (title,$title,$content); / 生成列表开始 $list = ; $sql = select id,title,filename from article; $query = mysql_query ($sql); while ($result = mysql_fetch_array ($query) $list .= .$resulttitle.; $content .= str_replace (articletable,$list,$content); /生成列表结束 / echo $content; $filename = test/test.html; $handle = fopen ($filename,w); /打开文件指针,创建文件 /* 检查文件是否被创建且可写 */if (!is_writable ($filename) die (文件:.$filename.不可写,请检查其属性后重试!); if (!fwrite ($handle,$content) /将信息写入文件 die (生成文件.$filename.失败!); fclose ($handle); /关闭指针 die (创建文件.$filename.成功!); ?关于翻页:如我们指定分页时,每页20篇。某子频道列表内文章经数据库查询为45条,则,首先我们通过查询得到如下参数:1,总 页数;2,每页篇数。第二步,for ($i = 0; $i allpages; $i+),页面元素获取,分析,文章生成,都在此循环中执行。不同的是,die (创建文件.$filename.成功!;这句去掉,放到循环后的显示,因为该语句将中止程序执行。例:PHP代码查看源代码 打印帮助?php $fp = fopen (temp.html,r); $content = fread ($fp,filesize (temp.html); $onepage = 20; $sql = select id from article where channel=$channelid; $query = mysql_query ($sql); $num = mysql_num_rows ($query); $allpages = ceil ($num / $onepage); for ($i = 0;$i$allpages; $i+) if ($i = 0) $indexpath = index.html; else $indexpath = index_.$i.html; $start = $i * $onepage; $list = ”; $sql_for_page = select name,filename,title from article where channel=$channelid limit $start,$onepage; $query_for_page = mysql_query ($sql_for_page); while ($result = $query_for_page) $list .= .$title.; $content = str_replace (articletable,$list,$content); if (is_file ($indexpath) unlink ($indexpath); /若文件已存在,则删除 $handle = fopen ($indexpath,w); /打开文件指针,创建文件 /* 检查文件是否被创建且可写 */if (!is_writable ($indexpath) echo 文件:.$indexpath.不可写,请检查其属性后重试!; /修改为echo if (!fwrite ($handle,$content) /将信息写入文件 echo 生成文件.$indexpath.失败!; /修改为echo fclose ($handle); /关闭指针 fclose ($fp); die (生成分页文件完成,如生成不完全,请检查文件权限系统后重新生成!); ?third:smarty模版生成静态页面smarty自己有一个fetch函数,其功用有点类似于fread()可以用来生成静态的页面.这个例子大家想必 看起来眼熟,对,smarty手册中关于fetch函数的例子,hoho 某驼借用一下,比竟官方的例子总是很经典的嘛!PHP代码查看源代码 打印帮助caching = true; / only do db calls if cache doesnt exist if(!$smarty-is_cached(index.tpl) / dummy up some data $address = 245 N 50th; $db_data = array( City = Lincoln, State = Nebraska, Zip = 68502); $smarty-assign(Name,Fred); $smarty-assign(Address,$address); $smarty-assign($db_data); / capture the output $output = $smarty-fetch(index.tpl); /这个地方算是关键/ do something with $output here echo $output; /hoho /看到output的结果了吧 /然后呢?fwrite一下,我们就 得到我们所要的结果了。 $fp = fopen(archives/2005/05/19/0001.html, w); fwrite($fp, $content);fclose($fp); ? PHP代码/PHP生成静态页面类 查看源代码 打印帮助MbUrl=; $this-OutUrl=; $this-AllHtml=; $this-Sql=; $this-SouChar=; $this-ObjChar=; /-自动按字段替换- function AutoReplace() /-自动获取要替换的字符串- $tlen=count($row); $shuzu1=array(); $shuzu2=array(); if($row) $i=0; foreach($row as $key = $value) $shuzu2=; $shuzu1=$value; $i+; $this-Replacehtml(shuzu2,shuzu1); /-自动获取要替换的字符串- /-自动按字段替换完成- /-批量替换数组- function Replacehtml($Shuzusou,$Shuzuobj) /批量替换数组 if(count($Shuzusou)!=count($Shuzuobj) exit(替换数组不匹配); if($this-AllHtml=) exit(没有要替换的内容); for($i=0;$iAllHtml=str_replace($Shuzusou$i,$Shuzuobj$i,$this-AllHtml); /print(.$Shuzusou(i).=.$Shuzuobj(i).) /-批量替换数组完成- /-读取文件- function Readfile() $file=fopen($this-MbUrl,r); $fsize=filesize($this-MbUrl); $this-AllHtml=fread($file,$fsize); fclose($file); /-读取文件完成- /-保存文件- function SaveFile() $file=fopen($this-OutUrl,w); fwrite($file,$this-AllHtml); fclose($file); /-保存文件完成- /-生成静态的类完成 - /以下为引用的内容: /-静态生成- $MyMake=new Makehtml; $MyMake-MbUrl=demo.html; $MyMake-Readfile(); $THTml=$MyMake-AllHtml; $shuzu1=a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年甘肃陇南事业单位预计将于5月中旬发布考前自测高频考点模拟试题及完整答案详解一套
- 2025年福建省宁德市霞浦县实验幼儿园招聘若干人考前自测高频考点模拟试题附答案详解(完整版)
- 2025年浙江宁波市卫生健康委部分直属事业单位公开招聘高层次人才69人(第二批)考前自测高频考点模拟试题及一套答案详解
- 2025年福建南平武夷有轨电车有限公司招聘1人模拟试卷参考答案详解
- 2025年甘肃省兰州大学土木工程与力学学院聘用制(B岗)人员招聘模拟试卷及一套答案详解
- 保定市人民医院胸腔镜食管癌切除术技术考核
- 2025广西南宁市江南区翠湖路小学春季学期临聘教师招聘1人模拟试卷及完整答案详解1套
- 衡水市人民医院大量输血方案理论与实践考核
- 秦皇岛市中医院淋巴瘤病理分型与治疗方案选择考核
- 沧州市中医院胰腺术后长期随访考核
- 第二届“强国杯”技术技能大赛-工业大数据管理与分析赛项考试题库(含答案)
- 徐州市城市轨道交通1号线一期工程电动客车运营、修理及维护手册
- 制作并观察植物细胞临时装片教学设计(五篇模版)
- 导游证《中国古代建筑》知识考试(重点)题库(含答案)
- 《大气的组成和垂直分层》
- GB/T 2423.17-2024环境试验第2部分:试验方法试验Ka:盐雾
- 第一次月考试卷(月考)-2024-2025学年三年级上册数学人教版
- 新高考生物综合复习《稳态与调节》高考真题汇编(图片版含答案)
- CJT 399-2012 聚氨酯泡沫合成轨枕
- 中小微企业FTTR-B全光组网解决方案
- 第七单元单元任务“视频拍摄脚本写作”统编版高中语文必修上册
评论
0/150
提交评论