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

利用PHP生成静态html页面

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-3-10 13:16:38 | 显示全部楼层 |阅读模式
功能实现
7 N2 j1 S7 x! w/ x  s6 Z- V2 ?
- ~0 I! M. r+ v8 d  c设置example.html为模板文件,然后按照此模板文件生成article-1.html~article-5.html,以此来做简单的演示,代码如下:' G9 k) i# R3 Y- r/ n5 {: p
8 T3 q: [  S8 B# T
<?php
( g( H# F* d" m, X
2 T5 P# U" l8 k: N# v    header("Content-type:text/html;charset=utf-8");: @+ c) I, `6 k$ ~" K+ L

, q' F! Z2 r) `% Q# u, T
, ^9 y3 H* W2 j* S  J//将数据存入二维数组
- \- n  r: {' ~5 w7 W, W$con=array(! P; A) j5 R1 b; `
    array('文章标题1','文章内容1'),* `3 U  p: s, b, M0 Q& z
    array('文章标题2','文章内容2'),
- b; X# d* ~: f3 [0 n  p' k    array('文章标题3','文章内容3'),9 ]4 o+ U* v* J; D/ D) \  H
    array('文章标题4','文章内容4'),
. v) r8 `: A0 g    array('文章标题5','文章内容5')
0 t0 @- P- L! n* t);
0 G8 f5 M) I" T, ^
- J, O! p6 Y' ]" S, mforeach($con as $id=>$val){ //循环生成3 q$ }& ?' T" p% U9 M
    $title=$val[0];9 z8 N: O$ J/ C- M% ]
    $content=$val[1];
, p6 q$ Y% Q! C7 C. d; w) E) [    $path="article-".($id+1).".html";8 K3 n, ^  w4 v( c

+ M' l: j3 D. u/ Y9 p0 D$ [9 B    //替换example内容,并获取内容赋值给$str
! `; N4 G( f* N$ j1 t9 N0 p. l    $fp=fopen("example.html","r");- F' h, e& Y/ m  y; x8 K
    $str=fread($fp,filesize("example.html"));/ w0 d: p+ u" n) v- }0 Q
    $str=str_replace("{title}",$title,$str);
# W( ^% H; q8 B/ n6 Q    $str=str_replace("{content}",$content,$str);# S1 [0 n0 m8 |8 _- K! ]
    fclose($fp);
3 R* m3 |- k  ~! m5 m" v' O* E( d  q2 g  v. ^1 B1 S" x7 A) s+ k
    //新建空白文件,将$str写入
2 @) z% Z+ \% U+ }  h) |    $handle=fopen($path,"w");% D9 \5 e2 A; y1 Z  Z
    fwrite($handle,$str);
4 c" q6 U- }9 z. m  g    fclose($handle);' H9 ?  \9 x/ q$ N) W6 p

9 |9 e8 V  V' P& e- L    echo "生成".$path."<br/>";3 U# S0 E( I" X
}
  W3 E2 n1 A4 j% y?>3 R/ ~$ i0 e" U2 X2 z( B/ Q# w
4 V2 i% k( Z) E. v2 W' ?
) ]: K3 j5 t+ [8 M
注解:1 N7 X5 K6 U% Y! A# w

' ^! b. u" k7 e( G' ~( K2 G$ ^fopen(文件名,打开方式),打开文件函数,若无文件,则创建。其返回值为资源型;
$ A0 t7 R$ w9 ?fread(文件名,读取字节数),读取文件内容及对应的字节数;
$ I1 K+ j9 _; Vstr_replace(规定要查找的值,替换被查找值的值,被搜索的字符串),替换函数;2 i; p( l! _0 g8 \6 t
fclose(文件名),关闭文件;+ f0 U' o9 V6 y6 u6 i
fwrite(要写入的打开文件,要写入打开文件的字符串,要写入的最大字节数)。3 c9 c. }, J; t7 u

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-3-10 13:18:57 | 显示全部楼层
PHP生成HTML的技术要比ASP的技术相对来说要简单一点,下面简要说一下怎样用PHP批量生成HTML技术吧,先看一下面源码:
0 k5 @2 L6 g" @2 d- [* w: S. y$ o% _
<?php  K- V. O0 ^% n% L% a& o5 K- {
if($_POST[button]){
3 a/ t7 C% e; w6 C  M% p$ ?$ R5 T/ n! _6 H. L" m
$sql="select * from doorsjk_about where id<12";
+ f9 R+ N; v  W$ n- y9 i7 H$rs=$db->query($sql);' Z/ P0 `1 t% }6 f
while($row=$db->fetch_array($rs)){
' ^5 f, W& C1 T8 w# |; b' G
+ g6 P- ], A6 j5 S$path='list12'.$row[id].'.html';
2 l  t& o0 D1 y* R: X& O9 A/ p( O5 ]) E; E3 g
$fp=fopen("../group/about.html","r");
+ u9 _2 i$ A+ N" f# U  z  c$str=fread($fp,filesize("../group/about.html"));+ b4 i* x5 K- \- ]2 l
$str=str_replace("{title}",$row[title],$str);4 v( J# r) A8 w4 h) E' Z9 p' |# `
$str=str_replace("{name}",$system['name'],$str);0 d0 `% y) E+ m0 ]5 n
$str=str_replace("{content}",$row[content],$str);
( g. T) B, j6 r1 ]: \$str=str_replace("{copyright}",$system['copyright'],$str);
3 q. A, G8 Y% V9 k5 R: T8 Y7 k! Ffclose($fp);- S/ M$ V8 ~+ U% t' Z

5 G7 M% {3 e# `. M3 m$handle=fopen("../group/".$path,"w");
& B% e! v6 b8 M# e; A3 p# s9 F: i+ ?fwrite($handle,$str);. Y# _. O  [4 J2 ]2 `) P
echo "<font color='red'>正在生成</font>";
! Q( C+ d; d! U2 J* C" f: Pecho "$path";
, I+ b$ F. o1 J- ?fclose($handle);
, w  U1 q* ?3 a  x' X1 m}. k; T6 w" T8 G8 p/ N: `
echo "<script>alert('生成成功!');window.location.href='Onlyhtml.php';</script>";1 Z4 I5 Y- [  V1 Y7 d/ y
}, s. a9 `$ z0 h
?>6 {2 ~1 K: s3 P* G

5 N+ p2 H3 R& C<form id="form1" name="form1" method="post" action="">
& {% s: _2 }5 I/ _1 L  <label><div style="margin:200px 200px;"><img src="../images/html.jpg" />
8 x  }. g! Z! d7 d  s  <input type="submit" name="button" id="button" value="单页生成" />
1 W0 `  a. o6 K: U  </div>- A5 i# \* O( L% I" V6 R
  </label>$ l- Q( I& ]+ P0 N. @/ q5 r
</form>
6 o8 u  |- v5 g. Q# U! }& d' f8 D% l
    首先将连接数据库的代码包含进来,下面是一个点击的表单,当接受到按钮 button 后,就直接循环生成HTML,这里的$path='list12'.$row[id].'.html';是生成的文件名称,而$fp=fopen("../group/about.html","r");是打开的模板文件,只要做成自己想要的HTML文件就可以了,这里用str_replace函数来做替换的标签,这样就可以在HTML里面调用类似于{title}这样的标签生成HTML文件了,举一反三,简单的HTML批量生成就做成了。
# W' q0 H  s( R( x, l" D1 ^8 m% V
    在HTML文件里调用标签是:{title} ,这样就直接调到读取的数据库里文件:$row[title],如果数据量很大,可以分段批量生成,就是生成ID:从()到()之间。用limit来接受调用。至于HTML里面要用到的动态文件,比如生成静态后还要统计文章的读取次数,这个动态的调用可以封装成JS文件,嵌入进来就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-11 23:16 , Processed in 0.022093 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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