易陆发现论坛

 找回密码
 开始注册
查看: 115|回复: 1
收起左侧

利用PHP生成静态html页面

[复制链接]
发表于 2020-3-10 13:16:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?开始注册

x
功能实现7 U8 S+ C7 _( j: [2 }3 S

7 L  e; s- n& i$ ~设置example.html为模板文件,然后按照此模板文件生成article-1.html~article-5.html,以此来做简单的演示,代码如下:
% s2 P7 L  p7 n4 j2 r  i  f/ Q; f( g1 C' p! J, ~2 n) I
<?php  ^3 z& \+ b0 a% x+ g

/ D5 i# ?" L. H% `7 @    header("Content-type:text/html;charset=utf-8");7 g7 m+ V9 n6 u
" f/ Y* A- \5 d' ?2 P; ]

+ J8 d* D: Y  L* m; x. E//将数据存入二维数组% a! Y8 |* Z" q9 I" c
$con=array(  I$ F! h- m! M" j3 a
    array('文章标题1','文章内容1'),
  y0 u  X8 R( J7 M3 O  |3 J2 N    array('文章标题2','文章内容2'),9 o+ `, L( S! F$ i) \
    array('文章标题3','文章内容3'),
6 h0 w$ y1 Q2 n6 i  K$ J* G    array('文章标题4','文章内容4'),
# |$ p) ^) b6 M    array('文章标题5','文章内容5')
+ M4 P. t. W- r; S6 M$ f);
) Y1 R% K9 S3 I$ n- E" l# a6 W! V" A6 [1 Y
foreach($con as $id=>$val){ //循环生成
/ ~" [1 m$ a* W0 y0 K' o    $title=$val[0];9 W& l: L/ x9 d, H" P& x
    $content=$val[1];
+ `) |% }" y2 G2 k    $path="article-".($id+1).".html";
5 e9 A5 Z( u1 }
8 s( K. R# B3 W. C# u4 ~8 ?    //替换example内容,并获取内容赋值给$str
2 a0 m9 G9 z/ r  W+ K. R    $fp=fopen("example.html","r");* h6 X% P+ `  \) J! y
    $str=fread($fp,filesize("example.html"));
+ g" w/ m3 ^' M  {& \* @' K# K) a    $str=str_replace("{title}",$title,$str);% T$ c2 N. D; y) q' ?" s* F1 u' A
    $str=str_replace("{content}",$content,$str);
  ]' }; ~" v4 \- |+ e    fclose($fp);
' v% \1 e4 l3 O; L( x2 p
6 M! H! g* |# _* r+ l# b# t% R& y( X    //新建空白文件,将$str写入
+ F3 D- b' g+ ~- Z6 c    $handle=fopen($path,"w");0 }0 u: Q1 ~2 ?
    fwrite($handle,$str);0 l! c6 S6 s1 q% N  D4 R
    fclose($handle);
/ z8 S9 S( @0 j& y$ w7 @/ C
# c3 Y& K4 e5 s3 ]    echo "生成".$path."<br/>";, V7 z1 a* N3 y% j- Y4 y
}
3 {+ V  ?: p7 ]?>0 ~- m. g  f* G/ P3 u" Q. \7 ^& M$ |' H

7 K) Y3 j' Y0 `5 y5 m1 ~1 i# I$ j- n+ E5 k: t
注解:
) G4 T7 i% N- ?5 [  N1 T+ P& T, J& ]$ s. y
fopen(文件名,打开方式),打开文件函数,若无文件,则创建。其返回值为资源型;
7 U  E" V8 i/ B! G. m3 t  Sfread(文件名,读取字节数),读取文件内容及对应的字节数;
8 X3 Q" n% B3 s& }* Y4 I0 X, Ostr_replace(规定要查找的值,替换被查找值的值,被搜索的字符串),替换函数;% a4 o& a% N% \# E8 W. X( `
fclose(文件名),关闭文件;
# |. [0 o- J7 `( dfwrite(要写入的打开文件,要写入打开文件的字符串,要写入的最大字节数)。
1 ?, O. g# }( y/ D: U) G- _
 楼主| 发表于 2020-3-10 13:18:57 | 显示全部楼层
PHP生成HTML的技术要比ASP的技术相对来说要简单一点,下面简要说一下怎样用PHP批量生成HTML技术吧,先看一下面源码:6 W3 j) t1 J6 U( o
7 [6 M& F" D6 W, ~8 w
<?php9 f" s1 t6 e' y$ b) C5 D1 m* j
if($_POST[button]){
* K9 K) V6 }. m& Q
% ~- y  s5 m* l$ M4 m% d6 G$sql="select * from doorsjk_about where id<12";
. f3 Q9 n- |( ^6 {$ _( b. O2 K$rs=$db->query($sql);
( b2 l( {( D4 D" T: ]% C9 {& ~while($row=$db->fetch_array($rs)){
/ u( Q$ x; |; W* E4 K( S  B( k7 p
$path='list12'.$row[id].'.html';3 `; p7 W4 j, x( B/ ?

/ h5 ^8 N; c0 m2 b8 i# \$fp=fopen("../group/about.html","r");
! C1 K/ P0 Z6 Y& q1 q0 K$str=fread($fp,filesize("../group/about.html"));9 v: `+ Y8 h" s6 D5 I( ~! |* N
$str=str_replace("{title}",$row[title],$str);
1 J) q! v9 @. _. G# o$str=str_replace("{name}",$system['name'],$str);% U% |# A9 n3 e# c  F
$str=str_replace("{content}",$row[content],$str);
" {: p4 _8 t) p5 h9 N3 B" n7 j$str=str_replace("{copyright}",$system['copyright'],$str);- }/ f& r6 u) d
fclose($fp);
9 {. Q7 _8 |' b% F- y: `& X9 z" \
" @3 b- b$ ]& ~$handle=fopen("../group/".$path,"w"); % h+ g5 z; ^* |! P7 f
fwrite($handle,$str);
( v7 E1 e, X: z- W  ]3 ~6 jecho "<font color='red'>正在生成</font>";
$ Q, X4 g7 |4 R! S! Hecho "$path";& e! s5 ]+ H" t8 _0 M
fclose($handle);- j' Q% t2 Y  r' [: l
}
9 ]. M6 e, O8 R5 g: R6 e; hecho "<script>alert('生成成功!');window.location.href='Onlyhtml.php';</script>";
1 |* Z  |5 Y9 ~}
& w$ O/ w  V+ W: V0 W?>* {( M( G3 B- v) J( u/ P. ^# J

  R. m* _( J& x" L, a$ K<form id="form1" name="form1" method="post" action="">1 r. q7 u# u. h5 T: x6 |; `) g
  <label><div style="margin:200px 200px;"><img src="../images/html.jpg" />+ O, b# X, Y( x6 b" p& E
  <input type="submit" name="button" id="button" value="单页生成" />- v4 I! L; T+ o6 T7 r0 `
  </div>
' W( C) b6 X1 Y5 P3 p  </label>
# k& @; }9 l" K8 P+ B% h</form>
8 C7 U3 o2 t) t8 W5 M' S
+ R  A) E$ P, T" {  t, n    首先将连接数据库的代码包含进来,下面是一个点击的表单,当接受到按钮 button 后,就直接循环生成HTML,这里的$path='list12'.$row[id].'.html';是生成的文件名称,而$fp=fopen("../group/about.html","r");是打开的模板文件,只要做成自己想要的HTML文件就可以了,这里用str_replace函数来做替换的标签,这样就可以在HTML里面调用类似于{title}这样的标签生成HTML文件了,举一反三,简单的HTML批量生成就做成了。! ^0 _4 ]/ m" @/ H0 u, ]
& W+ O) U4 `. }- ], D8 H3 k# g
    在HTML文件里调用标签是:{title} ,这样就直接调到读取的数据库里文件:$row[title],如果数据量很大,可以分段批量生成,就是生成ID:从()到()之间。用limit来接受调用。至于HTML里面要用到的动态文件,比如生成静态后还要统计文章的读取次数,这个动态的调用可以封装成JS文件,嵌入进来就行了。
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

如有购买积分卡请联系497906712

QQ|返回首页|Archiver|手机版|小黑屋|易陆发现 点击这里给我发消息

GMT+8, 2020-4-8 04:08 , Processed in 0.055266 second(s), 20 queries .

Powered by 龙睿 bbs168x X3.2

© 2001-2020 Comsenz Inc.

快速回复 返回顶部 返回列表