php生成静态页相关问题

两种方法简单说明如下:
1. 使用文件函数得到静态页面的模板字符串,然后用str_replace函数将需要替换的东西替换了再写入到新的文件中。
2. 利用PHP的输出控制函数(Output Control)得到静态页面字符串,再写入到新的文件中。

下面开始详细的说明。

一. 利用模板生成

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

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

下面来说一下具体的实现思路:做一个模板――在模板里面把需要改变的地方用特殊的字符代替――将模板中的内容取出来存放到一个字符串中(这个字符串的内容 就是HTML代码和上面所说的特殊字符了)――使用函数将这个字符串里面的特殊字符用我们需要在页面上显示的内容替换――把替换后的字符串写到一个新 的.htm页面里面――成功了!

功能的实现离不开PHP函数的帮忙。知道整体思路后最重要的就是去手册里面找相关的函数了。

首先,我们要把模板里面的HTML代码取出来放到一个变量中去,这个变量的值就是包含HTML的字符串了。我们可以使用string fread ( int handle, int length )函数来实现,仔细一看里面的参数“handle”是一个文件指针,这意味着我们得先把模板文件打开(PHP这一点相当麻烦,难道它就不能弄得一步到位 吗!!!)。好,我们继续找能把文件打开的函数:resource fopen ( string filename, string mode [, bool use_include_path [, resource zcontext]] ),在这里我们只要传入前两个参数就可以了,第一个参数就是文件名字了,记得路径不要弄错;第二个参数建议使用“rb”,“r”代表只读方式打开,并将文 件指针指向文件头,“b” 是指强制使用二进制模式,手册中建议:为移植性考虑,强烈建议在用 fopen() 打开文件时总是使用 'b' 标记。
在这一步我们的代码可以这样写:

CODE:[Copy to clipboard]<?php
$filemodel="template/it.php";                 #模板地址
$file=fopen($filemodel,"rb");                 #打开模板,得到文件指针
$temp=fread($file,filesize($filemodel));         #得到模板文件html代码
?>提醒一下:如果你只是想将一个文件的内容读入到一个字符串中,用 file_get_contents(),它的性能比fread()的代码好得多(这是手册上的原话,不过这个函数是在PHP5中支持的)。

第二步,使用str_replace()函数将得到的文件字符替换相关内容,替换的方法就是把从数据库中取出的内容或通过表单的得到的数据把模板中的特殊字符替换了。这一步很简单,也许刚开始想不明白,但是一看代码就一目了然了:

CODE:[Copy to clipboard]<?php
$temp=str_replace("[title]",$title,$temp);
?>上面的“"[title]"”就是模板文件中的特殊字符(是[title],不是”[title]”),“$title”就是我们想在页面上显示的内容,“$temp”就是模板文件html代码了。

如果还需要替换,则继续使用str_replace()函数就可以了,如:

CODE:[Copy to clipboard]<?php
$temp=str_replace("[postTime]",$postTime,$temp);
$temp=str_replace("[content]",$content,$temp);
?>第三步,也就是第一步的反操作了:要把之前处理过的模板字符串写入另一个文件中去,而这个文件就是我们最终可以对外显示的页面。现在重复类似第一步的二部曲:打开文件,写入文件:

CODE:[Copy to clipboard]<?php
fwrite(fopen("$filename","wb"),$temp); #$filename是静态页面的文件名
?>fwrite的作用就是把字符串的内容写入文件中去了。

同样,也可以使用file_put_contents函数写文件,但记得是在PHP5中。

这样,我们就可以用模板生成静态页面了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值