首頁 php教程 PHP源码 php生成静态html页面方法

php生成静态html页面方法

Jun 08, 2016 pm 05:29 PM
content name parser position quot

下面讲的是用php生成静态html页面方法哦,方法有几种,各位朋友可以根据自己的实际情况来实现。

<script>ec(2);</script>

第一种:利用模板。目前PHP的模板可以说是很多了,有功能强大的smarty,还有简单易用的smarttemplate等。它们每一种模板,都有一个获取输出内容的函数。我们生成静态页面的方法,就是利用了这个函数。用这个方法的优点是,代码比较清晰,可读性好。
这里我用smarty做例子,说明如何生成静态页
require('smarty/Smarty.class.php');
$t = new Smarty;
$t->assign("title","Hello World!");
$content = $t->fetch("templates/index.htm");
//这里的 fetch() 就是获取输出内容的函数,现在$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():开始“捕捉”缓存 也就是从这里开始 打开浏览器的缓存
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", "endElement");//设立标签触发时的相应函数 这里分别为startElement和endElenment
xml_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));
}//每次取出4096个字节进行处理
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教程网(www.97xxoo.org)
查看完整的教程请点:http://www.97xxoo.org/article/1/2008/20081123423.shtml
{
??global $name,$position;
??if($position)
echo $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);
?>

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Python遞歸下降Parser怎麼實現 Python遞歸下降Parser怎麼實現 May 17, 2023 am 08:44 AM

1.算術運算表達式求值要解析這類文本,需要另外一種特定的語法規則。我們在這裡介紹可以表示上下文無關文法(contextfreegrammer)的語法規則巴科斯範式(BNF)和擴展巴科斯範式(EBNF)。實際上,小到一個算術運算表達式,大到幾乎所有程式設計語言,都是透過上下文無關文法來定義的。對於簡單的算術運算表達式,假定我們已經用分詞技術將其轉換為輸入的tokens流,如NUM+NUM*NUM(分詞方法參見上一篇博文)。在此基礎上,我們定義BNF規則定義如下:expr::=expr+term|ex

CSS 佈局屬性最佳化技巧:position sticky 和 ​​flexbox CSS 佈局屬性最佳化技巧:position sticky 和 ​​flexbox Oct 20, 2023 pm 03:15 PM

CSS版面配置屬性最佳化技巧:positionsticky和flexbox在網頁開發中,版面是一個非常重要的面向。良好的佈局結構可以提高使用者體驗,使頁面更加美觀和易於導航。而CSS佈局屬性則是達成此目標的關鍵。在本文中,我將介紹兩種常用的CSS佈局屬性最佳化技巧:positionsticky和flexbox,並提供特定的程式碼範例。一、positions

H5中position屬性的靈活運用技巧 H5中position屬性的靈活運用技巧 Dec 27, 2023 pm 01:05 PM

H5中如何靈活運用position屬性在H5開發中,常會涉及到元素的定位和佈局問題。這時候,CSS的position屬性就會發揮作用。 position屬性可以控制元素在頁面中的定位方式,包括相對定位(relative)、絕對定位(absolute)、固定定位(fixed)和黏附定位(sticky)。本文將詳細介紹在H5開發中如何靈活運用position屬性

html怎麼把div放在底部 html怎麼把div放在底部 Mar 02, 2021 pm 05:44 PM

html把div放在底部的方法:1.使用position屬性將div標籤相對於瀏覽器視窗進行定位,語法「div{position:fixed;}」;2、設定到底部距離為0來把div永遠放置於頁面底部,語法“div{bottom:0;}”。

h5如何使用position h5如何使用position Dec 26, 2023 pm 01:39 PM

在H5中使用position屬性可以透過CSS控制元素的定位方式:1、相對定位relative,語法為「style="position: relative;」;2、絕對定位absolute,語法為「style="position: absolute; 」;3、固定定位fixed,語法為「style="position: fixed;」等等。

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

position有哪些屬性 position有哪些屬性 Oct 10, 2023 am 11:18 AM

position屬性取值有static、relative、absolute、fixed和sticky等。詳細介紹:1、static是position屬性的預設值,表示元素按照正常的文檔流進行佈局,不進行特殊的定位,元素的位置由其在HTML文檔中的先後順序決定,無法透過top、right、bottom和left屬性進行調整;2、relative是相對定位等等。

css如何清除position css如何清除position Oct 07, 2023 pm 12:02 PM

css清除position的方法:1、使用static屬性,可以設定為static來清除position屬性;2、使用inherit屬性,可以清除元素的position屬性,並繼承父元素的position屬性;3、使用unset屬性,將屬性恢復為其預設值,並清除元素的position屬性;4、使用!important規則,將覆蓋其他樣式規則,並清除position屬性等等。

See all articles