找回密码
 注册
查看: 3259|回复: 1

利用PHP生成静态html页面

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-3-10 13:16:38 | 显示全部楼层 |阅读模式
功能实现1 \! n! E& L2 ]! f9 |8 `+ p9 {
7 T' d  r8 C. @, {% ^
设置example.html为模板文件,然后按照此模板文件生成article-1.html~article-5.html,以此来做简单的演示,代码如下:
9 j5 F+ n( {. Q1 v
% J1 a' R. f/ p<?php
7 C+ u" C% O8 o' e2 s+ x
- v/ x+ T( M6 s( b" t5 z    header("Content-type:text/html;charset=utf-8");
. s9 a9 S3 v4 r3 z+ z6 a: m3 X: z( e9 u/ }6 G; G7 w9 M7 H& R+ |5 Y

& m% x( o& N# {  Y& u//将数据存入二维数组
  ?; V( B" q/ s- U1 w$con=array(
0 u. G* A) V; k( y7 `- x. e0 B    array('文章标题1','文章内容1'),, @5 V  H; s3 f: e
    array('文章标题2','文章内容2')," F  |9 [- I2 J6 c/ [" [0 U2 |
    array('文章标题3','文章内容3'),, N, A% L( j% m0 m
    array('文章标题4','文章内容4'),( O- H3 N, v7 s) P2 \( P: g) t+ p
    array('文章标题5','文章内容5')
& V" j5 C+ p) `8 n);
- B& O( c' r8 {* n# L4 |: e  ]! V5 B6 }2 p, m# ^( Q
foreach($con as $id=>$val){ //循环生成
& w' @6 S8 A4 h1 j! x  c    $title=$val[0];/ h; w7 j! C8 w8 U
    $content=$val[1];. p+ [+ H3 Z) _8 I: b
    $path="article-".($id+1).".html";
9 _6 _7 g% B5 K, K6 Z: ^8 w& |* Q6 P+ _
4 \; ]. j) V' N* b( y9 ~; R    //替换example内容,并获取内容赋值给$str
/ M9 {+ T3 ?; T( k! \4 T2 g    $fp=fopen("example.html","r");7 v+ n! l* H7 a
    $str=fread($fp,filesize("example.html"));
; V7 V5 E6 d; k0 `1 b% E( ~5 P. x$ l    $str=str_replace("{title}",$title,$str);
1 [2 z" S, {8 l4 A. L; B    $str=str_replace("{content}",$content,$str);3 g$ `- C$ Y  Y" o  K9 p) ?7 }
    fclose($fp);
! E& J9 c) w2 u' g# j+ v" p2 D/ L& J$ ?* y7 g' J
    //新建空白文件,将$str写入3 r/ p8 D  _. e# ^' ~
    $handle=fopen($path,"w");, n% ~+ |/ p3 L7 s$ x4 B4 ]# }9 f
    fwrite($handle,$str);
6 R$ c/ ^" K. {1 [5 K$ ]" x    fclose($handle);" k5 _1 G! P; _

, H" N+ \' e; e: |( H2 ^    echo "生成".$path."<br/>";% y; R$ g) A/ |' j
}- J6 t" z* a) p& ^  V1 R" J
?>
: {% I  X3 _; p: Z7 V
. z9 j8 C$ [# w/ t5 D/ s4 [, P0 K3 t6 t9 A& [) D5 J. c
注解:
3 ~/ s4 ]( P3 z/ F' D6 u1 H  d5 a; E9 \+ r
fopen(文件名,打开方式),打开文件函数,若无文件,则创建。其返回值为资源型;. J5 T3 o7 K+ ~" l$ O* a, r
fread(文件名,读取字节数),读取文件内容及对应的字节数;+ J, I; b( t. d
str_replace(规定要查找的值,替换被查找值的值,被搜索的字符串),替换函数;% q3 b5 I  B" ~' B- s  a7 U+ Q" P
fclose(文件名),关闭文件;# }8 Y3 H, r, R% V" V$ R
fwrite(要写入的打开文件,要写入打开文件的字符串,要写入的最大字节数)。. ?& O5 K2 z+ P6 n/ O3 A) l6 G

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-3-10 13:18:57 | 显示全部楼层
PHP生成HTML的技术要比ASP的技术相对来说要简单一点,下面简要说一下怎样用PHP批量生成HTML技术吧,先看一下面源码:  D$ G, d& K- e! o6 G/ q
- W% E# p+ X% T
<?php
! R! m+ {" r8 s) j0 i. vif($_POST[button]){8 E! F4 U/ a) W$ I0 ]) E) P1 r, A

- U2 R1 i3 }# }( j& ~: v. g$ g1 S$sql="select * from doorsjk_about where id<12";
  f* ]2 u/ c$ `% Z4 s. [$rs=$db->query($sql);3 ]) Q4 a7 m/ j6 m) z
while($row=$db->fetch_array($rs)){! ]- L! y" i9 M6 T" Y' i# ?

4 X% q& e  [. S- W8 c$path='list12'.$row[id].'.html';
7 W- J& G8 u+ ?. q( E3 V0 R5 s
1 D" w1 @1 ?% v, k$fp=fopen("../group/about.html","r");
$ h; Z7 k) R; O& x: [$str=fread($fp,filesize("../group/about.html"));
1 C0 q  G/ Q# ?- ~" v" e$str=str_replace("{title}",$row[title],$str);5 b# f8 J" M9 L0 @# ]
$str=str_replace("{name}",$system['name'],$str);
; N" K9 s7 o: B* O1 r2 [- t$str=str_replace("{content}",$row[content],$str);
, q. x$ n1 }3 U+ i$ T+ q$str=str_replace("{copyright}",$system['copyright'],$str);
, W# N$ Y$ U8 T1 ^% |fclose($fp);/ s3 B/ \; E3 p! L' ]5 p" Z7 b

3 f  g6 g9 @6 w+ b* `7 R$handle=fopen("../group/".$path,"w");
0 Q% p6 W) G8 K( M* jfwrite($handle,$str);* ?) J( @( o/ z7 E( f3 c4 P, y- H  r
echo "<font color='red'>正在生成</font>";
- N& }8 i. _- u* b5 B/ uecho "$path";/ t, }# _; |( k- N9 Q
fclose($handle);6 K0 j0 Z$ W" g1 l: M" F2 h: r
}) S+ d$ `5 j3 q
echo "<script>alert('生成成功!');window.location.href='Onlyhtml.php';</script>";
$ ^- x1 J6 M/ g- O8 G7 N& u. J}
  m$ m& H9 F& f% t; Y, V/ _?>
: |7 v1 @; p9 D
' A" l9 v. C* ]- Z4 Z<form id="form1" name="form1" method="post" action="">; H" ~* C7 U8 t% l0 W( J
  <label><div style="margin:200px 200px;"><img src="../images/html.jpg" />9 J" P, k8 W- D- k% Y
  <input type="submit" name="button" id="button" value="单页生成" />) {1 n4 X. S+ f3 p- Z
  </div>+ M  e/ g9 L0 o7 G4 F
  </label>5 a+ @5 I% r' S- ^
</form># p% L0 ^0 V, V! ~5 F" b8 e- b

5 q; M% ]' H5 a  p" K! I7 E& N8 N) O    首先将连接数据库的代码包含进来,下面是一个点击的表单,当接受到按钮 button 后,就直接循环生成HTML,这里的$path='list12'.$row[id].'.html';是生成的文件名称,而$fp=fopen("../group/about.html","r");是打开的模板文件,只要做成自己想要的HTML文件就可以了,这里用str_replace函数来做替换的标签,这样就可以在HTML里面调用类似于{title}这样的标签生成HTML文件了,举一反三,简单的HTML批量生成就做成了。6 ]" H3 s* r4 W0 B0 Y3 ]8 _

! I* I$ p( ?+ q/ @    在HTML文件里调用标签是:{title} ,这样就直接调到读取的数据库里文件:$row[title],如果数据量很大,可以分段批量生成,就是生成ID:从()到()之间。用limit来接受调用。至于HTML里面要用到的动态文件,比如生成静态后还要统计文章的读取次数,这个动态的调用可以封装成JS文件,嵌入进来就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 01:06 , Processed in 0.322066 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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