PHP生成静态文件的方法Word格式.docx

上传人:b****3 文档编号:15786173 上传时间:2022-11-16 格式:DOCX 页数:12 大小:62.40KB
下载 相关 举报
PHP生成静态文件的方法Word格式.docx_第1页
第1页 / 共12页
PHP生成静态文件的方法Word格式.docx_第2页
第2页 / 共12页
PHP生成静态文件的方法Word格式.docx_第3页
第3页 / 共12页
PHP生成静态文件的方法Word格式.docx_第4页
第4页 / 共12页
PHP生成静态文件的方法Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

PHP生成静态文件的方法Word格式.docx

《PHP生成静态文件的方法Word格式.docx》由会员分享,可在线阅读,更多相关《PHP生成静态文件的方法Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

PHP生成静态文件的方法Word格式.docx

写入模板成功"

}else{

fclose($fp);

写入模板失败!

"

}

>

2,按时间生成html文件名

$content="

这是一个以日期时间为文件名的静态生成网页的测试文件,文件名格式一般为<

fontcolor=#ff0000>

年月日时分秒.html<

/font>

;

$date=date('

YmdHis'

$fp=fopen(date('

).'

.html'

//本函数可用来打开本地或者远端的文件'

w'

开文件方式为写入,文件指针指到开始处,并将原文件的长度设为0。

若文件不存在,则建立新文件。

if(fwrite($fp,$content)){

//格式是.intfwrite(intfp(文件名),stringstring(内容),int[length](长度));

本函数将字符串string写入文件资料流的指针fp上。

//若有指定长度length,则会写入指定长度字符串,或是写到字符串结束。

//函数用来关闭已经打开的文件的指针fp。

成功返回true,失败则返回false。

echo($content);

3,下面为转换文件名的一个方法

$s_fname="

93e.php"

$o_fname="

93e.htm"

ob_end_clean();

ob_start();

include($s_fname);

$length=ob_get_length();

$buffer=ob_get_contents();

$buffer=eregi_replace("

r"

$buffer);

$fp=fopen($o_fname,"

w+"

fwrite($fp,$buffer);

fclose($fp);

这样就可以把93e.php转化为静态的HTML文件了。

要注意的是待转换的文件里不能有ob_end_clean();

和ob_start();

语句,且目录要有写权限。

深入静态生成:

谈PHP生成静态页面

一、引言

在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权限限制等,但是,对应一些我们经常频频使用的文件,比方说,开发的新闻发布系统,我们不希望很多用户都读取数据库才显示结果,这样一方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的响应时间,所有,有了"

静态页面话"

的做法,当前很多网站都采用这种技术,一般都是由管理后台控制,或者生成html直接显示,或者xhtml用css控制显示,或者生成xml用xslt显示,这些技术都不是难的,在这里我就浅显的说说生成html的方法.

二、预备知识 

模板技术:

[PHP]模板引擎Smarty深入浅出介绍 

--2005-12-31

[PHP]笑谈配置,使用Smarty技术 

 

--2006-01-04

缓存技术:

有些信息比方经常不变的,但是还是能变的信息放在缓存中以加快显示速度,这是很有价值的,所谓的缓存,通俗的理解就是一些保存在服务器端的共用信息.它是于服务器同生死的,我们在保存缓存的时候可以指定下次更新的时间的判断,比方要在5分钟更新一次,可以记录上次更新的时间,和当前时间比较,如果大于5分钟,读取数据库,更新换成,否则直接读取缓存数据,当然,缓存需要客户端用户激活的,只需一次.

ob_start()函数:

打开输出缓冲区.

函数格式voidob_start(void)

说明:

当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。

为了输出缓冲区的内容,可以使用ob_end_flush()或flush()输出缓冲区的内容。

Flush:

刷新缓冲区的内容,输出。

函数格式:

flush()

这个函数经常使用,效率很高。

ob_get_contents:

返回内部缓冲区的内容。

stringob_get_contents(void)

这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回FALSE.

ob_get_length:

返回内部缓冲区的长度。

intob_get_length(void)

这个函数会返回当前缓冲区中的长度;

和ob_get_contents一样,如果输出缓冲区没有激活,则返回FALSE.

ob_end_clean:

删除内部缓冲区的内容,并且关闭内部缓冲区

voidob_end_clean(void)

这个函数不会输出内部缓冲区的内容而是把它删除

ob_end_flush:

发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区

voidob_end_flush(void)

这个函数发送输出缓冲区的内容(如果有的话)

ob_implicit_flush:

打开或关闭绝对刷新

voidob_implicit_flush([intflag])

默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用flush() 

文件写入:

intfwrite(resourcehandle,stringstring[,intlength])

fwrite()把string的内容写入文件指针handle处。

如果指定了length,当写入了length个字节或者写完了string以后,写入就会停止,视乎先碰到哪种情况。

fwrite()返回写入的字符数,出现错误时则返回FALSE。

相关参考官方网站:

文件参考

三、解决方案

思路:

开启ob_start缓冲,当已经调出数据的时候获取ob_get_contents,然后生成静态页,ob_end_clean清除缓冲.ok,就这么来,来看一个例子(php+mysql的结合):

创建数据库:

CREATETABLE`bihtml`(

`id`int(11)NOTNULLauto_increment,

`szdtitle`varchar(16)NOTNULL,

`szdcontent`textNOTNULL,

PRIMARYKEY 

(`id`) 

)TYPE=MyISAM;

获取当前的ID,并导入模板:

$id=_POST['

id'

]

if(!

isset($id)&

&

is_integer($id))

{

@$db=newmysqli('

localhost'

'

root'

admin'

bihtml'

$result=$db->

fetch_one_array("

select 

*fromszd_biwhereid='

$id'

empty($result))

$tmp->

assign(array(

Szdtitle"

htmlspecialchars($result['

titles'

]),

Szdcontent"

$result['

]));

}

$tpl->

display('

default_1.tpl'

$this_my_f=ob_get_contents();

//此处关键

$filename="

$id.html"

if(tohtmlfile_cjjer($filename,$this_my_f))

echo"

生成成功$filename"

else

生成识别"

//把生成文件的过程写出函数

functiontohtmlfile_cjjer($file_cjjer_name,$file_cjjer_content)

if(is_file($file_cjjer_name)){

@unlink($file_cjjer_name);

$cjjer_handle=fopen($file_cjjer_name,"

if(!

is_writable($file_cjjer_name)){

returnfalse;

fwrite($cjjer_handle,$file_cjjer_content)){

fclose($cjjer_handle);

//关闭指针

return$file_cjjer_name;

四、说明事项

1:

一般建议管理员添加数据的时候就生成静态页面,可以考虑记录生成的文件名次和路径.

2:

php主要是 

ob_starts()和ob_get_contents,生成静态页面的时候很有用,当然也可以考虑调出数据库直接替换模板里面的变量也是可以的.

3:

主要的模板使用smarty,phplib都是可以的,smarty使用比较简易.

模板引擎Smarty深入浅出介绍——PHP

用PHP实现MVC开发模式的逻辑层和表示层有多种模板引擎可供选择,但是官方引擎SMARTY诞生后,选择就有了变化。

它的理念和实现都是相当"

前卫"

的。

本文主要讨论SMARTY之于其他模板引擎的不同特点,简要介绍了该引擎的安装及使用,并用一个小的测试案例对比了SMARTY和PHPLIBtemplate的速度和易用性。

一、MVC需要模板

MVC最早是在SmallTalk语言的开发过程中总结出的一种设计模式,MVC分别代表了"

模型"

、"

视图"

和"

控制"

,目的就是让不同的开发角色在大中型项目中各司其职。

在网络使用程序的开发中,可以用下图来表示各概念之间的关系。

该图展示了一个简单的WEB使用程序,用户在浏览器上看到信息是数据库服务器上的内容,但在这之前经过了使用服务器加工。

开发人员负责的就是建立数据结构、处理数据的逻辑以及表示数据的方法。

96年CGI在中国开始流行的时候,早期的WEB程序员都是从HTML开始自学成材的,在PERL中print一行行的HTML并不是一件难事,但是随着网络的一步步提速,页面大小也从当初的二、三十K暴涨了十倍。

写CGI程序就产生了一个迫切的要求:

分开PERL和HTML源码。

于是,社会进步体现在开

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1