下面讲的是用php生成静态html页面方法哦,利用模板
分类:博客热点

上边讲的是用php生成静态html页面方法哦,方法有三种,各位朋友能够凭借本身的实留意况来贯彻。

 

因为老是用户点击动态链接的时候都会对服务器发送数据查询的供给

对此二个访谈量可能达百万相对品级的网址来讲 那如实是服务器一个大大的担当

所以把动态数据调换来静态html页面就成了节约人力物力的首推

因为从前尚无相应的资历 刚开端的时候以为那一个技巧很神秘

但在看了有的例证现在开掘并非那么复杂(可是英特网的资料并非特意详细)

通过多个下午加午夜后的调查 终于把该做的职分达成了 上面是部分心得和三个简约的例子

但愿大虾们毫不玩弄

 

相通的话 用php调换输出html页面有三种办法 引用大虾的稿子如下:

先是种:利用模板。近期PHP的沙盘模拟经营能够说是超多了,有功用强盛的smarty,还会有轻便易用的smarttemplate等。它们各种模板,都有一个到手输出内容的函数。大家转移静态页面包车型大巴方法,正是运用了那么些函数。用这些法子的帮助和益处是,代码相比较明晰,可读性好。

 

此间自己用smarty做例子,表达什么生成静态页:

 

  1. <?php
  2. require("smarty/Smarty.class.php");
  3. $t = new Smarty;
  4. $t->assign("title","Hello World!");
  5. $content = $t->fetch("templates/index.htm");
  6. //这里的 fetch(卡塔尔就是获取输出内容的函数,今后$content变量里面,正是要出示的源委了
  7. $fp = fopen("archives/2005/05/19/0001.html", "w");
  8. fwrite($fp, $content);
  9. fclose($fp);
  10. ?>

 

 

 

第三种艺术:利用ob种类的函数。这里运用的函数首倘若 ob_start(), ob_end_flush(), ob_get_content(),其中ob_start(卡塔尔(قطر‎是开辟浏览器缓冲区的乐趣,展开缓冲后,全部来自PHP程序的非文件头音讯均不会发送,而是 保存在里面缓冲区,直到你采纳了ob_end_flush(卡塔尔.而这里最要害的一个函数,便是ob_get_contents(State of Qatar,这一个函数的效用是获得缓冲区的内容,相当于地方的不胜fetch(卡塔尔国,道理相像的。

 

 

  1. <?php
  2. ob_start();
  3. echo "Hello World!";
  4. $content = ob_get_contents(卡塔尔;//获得php页面输出的全体内容
  5. $fp = fopen("archives/2005/05/19/0001.html", "w");
  6. fwrite($fp, $content);
  7. fclose($fp);
  8. ?>

 

自作者选用的第2种办法 也正是用ob体系的函数

自家刚伊始看那几个的时候有一些不太掌握 后来才掌握ob是output buffering的情趣 也便是出口缓存

当您希图输出的时候 全部的数目都保存在ob里面 服务器拆解解析完php以往把富有要出口到顾客端的html代码都寄放在ob里面 若是大家要出口html静态页面 只要把缓存抽出来写入七个html页面就可以

因此原理其实是相当粗略的

此间运用了多少个函数 由于自家初学php 相当多函数本身还不打听 所以这里也证实一下 希望得以扶持大家

 

ob_start(卡塔尔国:带头“捕捉”缓存 也正是从这里起首 展开浏览器的缓存

ob_end_flush(State of Qatar:关闭浏览器缓存

ob_get_content(State of Qatar:读取缓存内容

fopen(”文件路线”,”张开格局”卡塔尔张开文件 这些函数的展开形式有少数种 上边介绍二种首要的方式:

“r” 只读形式展开,将文件指针指向文件头。

“r+” 读写格局张开,将文件指针指向文件头。

“w” 写入措施张开,将文件指针指向文件头并将文件大小截为零。假设文件不设有则尝试创设之。

“w+” 读写情势展开,将文件指针指向文件头并将文件大小截为零。借使文件不设有则尝试创制之。

fwrite(”文件名称”,”写入内容”卡塔尔 写入文件

fclose(State of Qatar 关闭文件

 

是因为小编要转移的html文件超多 大概有几百个 所以这里不能够静态内定fopen的路径 我们能够设置三个门路变量 里面能够保存客商传来的id等新闻 方便开展html文件命名 上面是本身结合上次php读取xml数据的叁个简约例子

 

  1. <?php
  2. ob_start(卡塔尔国;//展开浏览器缓存
  3.  
  4. //下边是读取xml数据
  5. $parser = xml_parser_create(卡塔尔国; //制造叁个parser编辑器
  6. xml_set_element_handler($parser, "startElement", "endElement"State of Qatar;//设立标签触发时的相应函数 这里分别为startElement和endElenment
  7. xml_set_character_data_handler($parser, "characterData"State of Qatar;//设立数据读取时的呼应函数
  8. $xml_file="1.xml";//钦赐所要读取的xml文件,能够是url
  9. $filehandler = fopen($xml_file, "r"State of Qatar;//展开文件
  10.  
  11.  
  12. while ($data = fread($filehandler, 4096)) 
  13. {
  14. xml_parse($parser, $data, feof($filehandler));
  15. }//每一回取出40玖拾玖个字节进行管理
  16.  
  17. fclose($filehandler);
  18. xml_parser_free($parser卡塔尔;//关闭和自由parser深入分析器
  19.  
  20.  
  21. $name=false;
  22. $position=false;
  23. function startElement($parser_instance, $element_name, $attrs卡塔尔(قطر‎//开首标签事件的函数
  24. {
  25. global $name,$position;
  26. if($element_name=="NAME")
  27. {
  28. $name=true;
  29. $position=false;
  30. echo "名字:";
  31. }
  32. if($element_name=="POSITION")
  33. {$name=false;
  34. $position=true;
  35. echo "职位:";
  36. }
  37. }
  38.  
  39. function characterData($parser_instance, $xml_dataState of Qatar//读取多少时的函数
  40. {
  41. global $name,$position;
  42. if($position)
  43. echo $xml_data."<br />";
  44. if($name)
  45. echo $xml_data."<br />";
  46. }
  47.  
  48. function endElement($parser_instance, $element_name)//截至标签事件的函数
  49. {
  50. global $name,$position;
  51. $name=false;
  52. $position=false;
  53. }
  54. //xml数据读取完结
  55.  
  56. $htmlname=$id.".html";//$id能够温和定义 这里代表客户传来的id
  57. $htmlpath="archives/".$htmlname; //设置路线变量
  58. $content = ob_get_contents(卡塔尔(قطر‎;//获得php页面输出的全体内容
  59. $fp = fopen($htmlpath, "w");
  60. fwrite($fp, $content);
  61. fclose($fp);
  62. ?>

转载:

先是种:利用模板。方今PHP的沙盘模拟经营能够说是相当多了,有功用强盛的smarty,还会有轻松易用的smarttemplate等。它们每一类模板,都有一个获取输出内容的函数。我们转移静态页面包车型客车不二秘诀,便是选用了这一个函数。用这么些方式的亮点是,代码相比较明晰,可读性好。
此地笔者用smarty做例子,表达什么生成静态页
require('smarty/Smarty.class.php');
$t = new Smarty;
$t->assign("title","Hello World!");
$content = $t->fetch("templates/index.htm");
//这里的 fetch(State of Qatar正是获取输出内容的函数,现在$content变量里面,正是要显示的开始和结果了
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>
第二种方法:利用ob连串的函数。这里运用的函数首假若 ob_start(), ob_end_flush(), ob_get_content(),其中ob_start(卡塔尔国是开辟浏览器缓冲区的情趣,打开缓冲后,全部来自PHP程序的非文件头消息均不会发送,而是保存在内部缓冲区,直到你利用了ob_end_flush(卡塔尔.而那边最珍视的三个函数,正是ob_get_contents(卡塔尔(قطر‎,那么些函数的成效是收获缓冲区的内容,也正是地点的要命fetch(卡塔尔国,道理同样的。代码:
ob_start();
echo "Hello World!";
$content = ob_get_contents(卡塔尔;//获得php页面输出的全体内容
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>
本人接收的第2种格局 也便是用ob体系的函数
本人刚伊始看那么些的时候某个不太明白 后来才驾驭ob是output buffering的情致 也正是出口缓存
当您盘算输出的时候 全体的数量都保存在ob里面 服务器分析完php以往把全数要出口到顾客端的html代码都存放在ob里头 假若大家要出口html静态页面 只要把缓存收取来写入贰个html页面就能够
就此原理其实是很简短的
这里运用了多少个函数 由于自家初学php 超级多函数本人还不精通 所以这里也认证一下 希望能够帮助我们
ob_start(State of Qatar:最初“捕捉”缓存 也正是从这里初步 张开浏览器的缓存
ob_end_flush(卡塔尔(قطر‎:关闭浏览器缓存
ob_get_content():读取缓存内容
fopen("文件路线","打开形式"卡塔尔(قطر‎张开文件 97xxoo那些函数的展开格局有好三种上面介绍二种重大的方式:
'r' 只读形式展开,将文件指针指向文件头。??
'r+' 读写方式展开,将文件指针指向文件头。??
'w' 写入措施展开,将文件指针指向文件头并将文件大小截为零。假诺文件海市蜃楼则尝试创制之。??
'w+' 读写方式张开,将文件指针指向文件头并将文件大小截为零。如若文件不设有则尝试创制之。??
fwrite("文件名称","写入内容"卡塔尔(قطر‎ 写入文件
fclose(卡塔尔(قطر‎ 关闭文件
鉴于自家要转移的html文件非常多 恐怕有几百个 所以这里不能够静态钦定fopen的路线 大家能够设置贰个门路变量 里面能够保存客户传来的id等消息 方便开展html文件命名 下边是本人结合上次php读取xml数据的叁个粗略例子 程序代码
ob_start(卡塔尔(قطر‎;????????????//展开浏览器缓存
?>
//上面是读取xml数据
$parser = xml_parser_create(State of Qatar; //创立叁个parser编辑器
xml_set_element_handler($parser, "startElement", "endElement"卡塔尔;//设立标签触发时的呼应函数 这里分别为startElement和endElenment
xml_set_character_data_handler($parser, "characterData"卡塔尔国;//设立数据读取时的附和函数
$xml_file="1.xml";//钦点所97gan要读取的xml文件,能够是url
$filehandler = fopen($xml_file, "r"State of Qatar;//展开文件
while ($data = fread($filehandler, 4096))
{
xml_parse($parser, $data, feof($filehandler));
}//每趟抽出40一百个字节进行拍卖
fclose($filehandler);
xml_parser_free($parser卡塔尔国;//关闭和释放parser深入分析器
$name=false;
$position=false;
function startElement($parser_instance, $element_name, $attrsState of Qatar//发轫标签事件的函数
{
global $name,$position;??
if($element_name=="NAME")
{
$name=true;
$position=false;
echo "名字:";
}
if($element_name=="POSITION")
{$name=false;
$position=true;
echo "职位:";
}
}
function characterData($parser_instance, $xml_dataState of Qatar//读取多少时的函数
//此教程来源于97xxoo教程网(www.97xxoo.org)
翻看完整的教程请点:
{
??global $name,$position;
??if($position)
echo $xml_data."
";
if($name)
echo $xml_data."
";
}
function endElement($parser_instance, $element_nameState of Qatar//停止标签事件的函数
{
global $name,$position;
$name=false;
$position=false;
}
?>
//xml数据读取达成
$htmlname=$id.".html";??????????????????????????//$id可以仁慈定义 这里代表客户传来的id
$htmlpath="archives/".$htmlname;?????? //设置路径变量
$content = ob_get_contents(State of Qatar;??????????????//得到php页面输出的全体内容
$fp = fopen($htmlpath, "w");
fwrite($fp, $content);
fclose($fp);
?>

先是种:利用模板。近些日子PHP的沙盘模拟经营能够说是相当多了,有效能强盛的smarty,还应该有简单易用的smarttemplate等。它们每一项模板,都有二个赢得输出内容的函数。大家转移静态页面包车型地铁诀要,正是接受了这几个函数。用这几个措施的优点是,代码比较明晰,可读性好。 这里我用smarty做例子,表达怎么着变化静态页require('smarty/Smarty.class.php'State of Qatar;$t = new 斯马特y;$t-assign(title,Hello World!State of Qatar;$content = $t-fetch(templates/index.htm卡塔尔国;//这里的 fetch()就是获得输出内容的函数,未来$content变量里面,正是要来得的剧情了$fp = fopen(archives/二零零七/05/19/0001.html, wState of Qatar;fwrite($fp, $content卡塔尔国;fclose($fpState of Qatar;? 第二种形式:利用ob连串的函数。这里运用的函数首假使 ob_start(), ob_end_flush(), ob_get_content(),其中ob_start(卡塔尔是展开浏览器缓冲区的情致,展开缓冲后,全体来自PHP程序的非文件头消息均不会发送,而是保存在内部缓冲区,直到你选用了ob_end_flush(卡塔尔.而这边最器重的叁个函数,就是ob_get_contents(State of Qatar,那几个函数的效应是赢得缓冲区的剧情,也正是地点的不得了fetch(State of Qatar,道理相通的。代码:ob_start();echo Hello World!;$content = ob_get_contents(State of Qatar;//得到php页面输出的全体内容$fp = fopen(archives/二零零五/05/19/0001.html, w卡塔尔(قطر‎;fwrite($fp, $content卡塔尔(قطر‎;fclose($fp卡塔尔;? 小编接受的第2种方法 也正是用ob类别的函数 我刚开端看这一个的时候有一点点不太明白 后来才领悟ob是output buffering的情趣 约等于出口缓存当你筹算输出的时候 全部的数目都保存在ob里面 服务器分析完php现在 把具备要出口到顾客端的html代码都寄存在ob里边 若是大家要出口html静态页面 只要把缓存抽出来写入二个html页面就能够所以原理其实是很简短的这里运用了多少个函数 由于本人初学php 比很多函数本身还不通晓 所以这里也证实一下 希望能够扶植我们ob_start(卡塔尔(قطر‎:起首捕捉缓存 也正是从这里开头展开浏览器的缓存ob_end_flush(卡塔尔:关闭浏览器缓存ob_get_content(卡塔尔国:读取缓存内容fopen(文件路线,张开形式卡塔尔(قطر‎张开文件 97xxoo那么些函数的开采格局有一点点种 上面介绍两种首要的形式:'r' 只读格局张开,将文件指针指向文件头。??'r+' 读写方式展开,将文件指针指向文件头。??'w' 写入措施展开,将文件指针指向文件头并将文件大小截为零。假若文件不设有则尝试创立之。??'w+' 读写格局张开,将文件指针指向文件头并将文件大小截为零。假使文件海市蜃楼则尝试创制之。??fwrite(文件名称,写入内容)写入文件fclose(卡塔尔 关闭文件由于自个儿要更动的html文件足够多 也许有几百个 所以这里无法静态内定fopen的路线 大家能够安装七个门道变量 里面可以保留客商传来的id等新闻 方便举行html文件命名 下边是自家结合上次php读取xml数据的贰个精简例子 程序代码ob_start(卡塔尔国;????????????//展开浏览器缓存?//上面是读取xml数据$parser = xml_parser_create(卡塔尔; //创制二个parser编辑器xml_set_element_handler($parser, startElement, endElementState of Qatar;//设立标签触发时的附和函数 这里分别为startElement和endElenmentxml_set_character_data_handler($parser, characterData卡塔尔;//设立数据读取时的附和函数$xml_file=1.xml;//钦点所97gan要读取的xml文件,能够是url$filehandler = fopen($xml_file, r卡塔尔国;//展开文件 while ($data = fread($filehandler, 4096卡塔尔国卡塔尔 {xml_parse($parser, $data, feof($filehandler卡塔尔State of Qatar;}//每一趟抽出40九十七个字节实行拍卖fclose($filehandler卡塔尔;xml_parser_free($parser卡塔尔国;//关闭和自由parser深入深入分析器$name=false;$position=false;function startElement($parser_instance, $element_name, $attrs卡塔尔国//起首标签事件的函数{global $name,$position;??if($element_name==NAME){$name=true;$position=false;echo 名字:;}if($element_name==POSITION){$name=false;$position=true;echo 职位:;}}function characterData($parser_instance, $xml_data卡塔尔(قطر‎//读取多少时的函数 //此教程来源于97xxoo教程网查看完整的课程请点:{??global $name,$position;??if($positionState of Qatarecho $xml_data.;if($name)echo $xml_data.;}function endElement($parser_instance, $element_name)//截止标签事件的函数{global $name,$position; $name=false;$position=false; }? //xml数据读取完成$htmlname=$id..html;??????????????????????????//$id能够和煦定义 这里表示客户传来的id$htmlpath=archives/.$htmlname;?????? //设置路线变量$content = ob_get_contents(卡塔尔国;??????????????//得到php页面输出的全部内容$fp = fopen($htmlpath, w卡塔尔;fwrite($fp, $content卡塔尔(قطر‎;fclose($fp卡塔尔国;?

本文由威尼斯在线注册平台发布于博客热点,转载请注明出处:下面讲的是用php生成静态html页面方法哦,利用模板

上一篇:用户的详细注册和判断 下一篇:没有了
猜你喜欢
热门排行
精彩图文