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

利用PHP生成静态html页面

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-3-10 13:16:38 | 显示全部楼层 |阅读模式
功能实现
3 z" L6 s, s) j0 `7 e! s( M9 A" \2 k0 G
设置example.html为模板文件,然后按照此模板文件生成article-1.html~article-5.html,以此来做简单的演示,代码如下:
! ~$ R. z' M$ C) y% B) x! L; ~% r( }, ^9 c! e5 [( I
<?php- H+ t4 i, T9 @3 ]

# C4 K$ F' e4 r! `# z! [8 E+ A    header("Content-type:text/html;charset=utf-8");
7 y7 y# Z" U% ^& `, Z
5 ]6 j- o- J, k  S# j& U
+ M$ S/ R( \! T9 F! c# ~7 |% M! D//将数据存入二维数组
% }# z5 s$ z4 q$ V3 Y$con=array(/ U4 V1 T+ g- T
    array('文章标题1','文章内容1'),
4 j; X/ @* b2 j& M# }0 u    array('文章标题2','文章内容2'),/ u' L6 ^7 \$ Q4 O( o0 i& k5 v  d
    array('文章标题3','文章内容3'),
# d: y2 S8 t% t9 O* g    array('文章标题4','文章内容4'),# H4 n% L5 N) F* T; ~3 @2 E; z9 N
    array('文章标题5','文章内容5')
& r* i! a8 n" h. R- _);
, k# U' T, @. ]% B" g( w/ t' k. Z# L. f0 L$ E& d( Q# d
foreach($con as $id=>$val){ //循环生成6 L/ D" f0 x1 H+ J1 U5 W
    $title=$val[0];: c' h+ @) l1 T+ ]
    $content=$val[1];
7 K* a0 |% K7 s% i/ n    $path="article-".($id+1).".html";1 n3 q. t5 Z+ O) t
) x1 g& P# d, A) q5 \
    //替换example内容,并获取内容赋值给$str$ n% p3 O9 {  @  Y0 g- J, H
    $fp=fopen("example.html","r");- d# C! E5 `# g, r. J% e' O7 q# _
    $str=fread($fp,filesize("example.html"));
8 L6 M; c" B! K3 C  t9 d# V, y    $str=str_replace("{title}",$title,$str);
1 O' u: I# ^# g* g& M: N    $str=str_replace("{content}",$content,$str);& x+ S% {* J0 c+ X& Z& _
    fclose($fp);
, Z' W! r3 S( m
' ?' ?8 M5 Y# _8 p' l& b' H) S0 D. @    //新建空白文件,将$str写入, w* y, f; r: k( z( k9 C- g& c
    $handle=fopen($path,"w");# {  ]8 Q, S% P' \; Y7 R6 y
    fwrite($handle,$str);
' Z* G! D6 s9 ~& n    fclose($handle);8 l- i; ~1 g7 m) c
; K4 L, E+ ^9 X2 E  d4 [
    echo "生成".$path."<br/>";
. l) E- F2 R$ f7 m- ?# Y( O% A}$ s7 }# I% _& D% s& u+ G0 x4 h/ D
?>! _1 ]7 @* Z, j% Q

* R5 \$ \0 ?) i) t" u* M9 z' R: U4 f  `) S9 `
注解:
& Q* a5 u3 q' ]% y$ y$ F) z/ J* j: s5 E3 n
fopen(文件名,打开方式),打开文件函数,若无文件,则创建。其返回值为资源型;4 i9 D+ |) R; ~
fread(文件名,读取字节数),读取文件内容及对应的字节数;
* Q/ c/ G+ R/ m+ R# jstr_replace(规定要查找的值,替换被查找值的值,被搜索的字符串),替换函数;
! M- O, O  p# L0 {+ J' ifclose(文件名),关闭文件;# @& S+ E: f9 z6 [: ^' y0 r
fwrite(要写入的打开文件,要写入打开文件的字符串,要写入的最大字节数)。, e6 b, j: s/ [* l# N) V' A/ a% S4 m

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-3-10 13:18:57 | 显示全部楼层
PHP生成HTML的技术要比ASP的技术相对来说要简单一点,下面简要说一下怎样用PHP批量生成HTML技术吧,先看一下面源码:# J6 N- p- k" p# N, D/ t

- }  |5 z! {, Q& v2 i6 U- r<?php
( o. Q" M$ w9 k: v0 Y9 Mif($_POST[button]){1 k# ^, g# h5 Z5 n

- ~: U) B, i! ]+ n+ I0 }$sql="select * from doorsjk_about where id<12";
/ F# r4 K, x& E* G$rs=$db->query($sql);
1 A4 v- C6 B6 w1 twhile($row=$db->fetch_array($rs)){8 O. K% K* N8 s; k+ T) _$ I
7 e7 R" w% ?( ^6 D
$path='list12'.$row[id].'.html';
' [: G7 Z6 Q7 z; s
- ~& k7 x4 w3 o, F2 w; P) v  k$fp=fopen("../group/about.html","r");1 [1 N" T9 I9 g# R# M! w2 E" w
$str=fread($fp,filesize("../group/about.html"));
8 ^3 p( V. p$ d# E% P- t1 p0 I7 k1 i$str=str_replace("{title}",$row[title],$str);$ Q1 R, m2 O. U, q6 R. ^7 W
$str=str_replace("{name}",$system['name'],$str);
2 u. U9 c$ B: a" h% T$str=str_replace("{content}",$row[content],$str);
0 G7 l7 A) {5 C$str=str_replace("{copyright}",$system['copyright'],$str);1 u  N; P- A- M
fclose($fp);
6 H# Q, I7 Q* Q+ f6 U
7 E5 _& K  q' O8 Y8 B$handle=fopen("../group/".$path,"w");
3 l$ X- c" d( a2 Ofwrite($handle,$str);
( F" s2 j- ^$ F  e% F( u' secho "<font color='red'>正在生成</font>";
- A- i5 g2 T8 r( r' m3 b2 Gecho "$path";! n$ H. l! m$ l: o  S* q
fclose($handle);2 M+ w# V( Z6 g8 [' S! ?* Y' Z
}
* Y5 x4 g) X# {3 _' Techo "<script>alert('生成成功!');window.location.href='Onlyhtml.php';</script>";
/ H0 J0 W% }  G9 J& L}' ?) f: m/ a- ~, |) Y) X
?>; c) o2 R- \' ^. L8 p& T# q+ o
( @* R" @6 Y/ Q2 u) U0 Q
<form id="form1" name="form1" method="post" action="">) ]: `. q) Q/ J5 D( `0 A$ z$ L# W7 U
  <label><div style="margin:200px 200px;"><img src="../images/html.jpg" />
1 C6 s" j# D/ p9 i$ y% n/ S  <input type="submit" name="button" id="button" value="单页生成" />
2 F) ~$ M2 _% g  p; y9 P+ D  </div>
; I2 ^/ I, U* ?: C3 U- A3 Q  </label>: l: B- f& \6 k' X4 h4 i2 |
</form>
6 @  M& l) ]7 H5 r4 Q, y- U% k9 h; {# f" p
    首先将连接数据库的代码包含进来,下面是一个点击的表单,当接受到按钮 button 后,就直接循环生成HTML,这里的$path='list12'.$row[id].'.html';是生成的文件名称,而$fp=fopen("../group/about.html","r");是打开的模板文件,只要做成自己想要的HTML文件就可以了,这里用str_replace函数来做替换的标签,这样就可以在HTML里面调用类似于{title}这样的标签生成HTML文件了,举一反三,简单的HTML批量生成就做成了。
& K  w, O* y- t6 o1 y8 H3 ~( t% H$ v/ `
    在HTML文件里调用标签是:{title} ,这样就直接调到读取的数据库里文件:$row[title],如果数据量很大,可以分段批量生成,就是生成ID:从()到()之间。用limit来接受调用。至于HTML里面要用到的动态文件,比如生成静态后还要统计文章的读取次数,这个动态的调用可以封装成JS文件,嵌入进来就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:12 , Processed in 0.019922 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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