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

利用PHP生成静态html页面

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2020-3-10 13:16:38 | 显示全部楼层 |阅读模式
功能实现6 ^2 U3 a3 |7 q3 ]; b! E) D

. E) a+ `8 E, h! ^+ U6 I设置example.html为模板文件,然后按照此模板文件生成article-1.html~article-5.html,以此来做简单的演示,代码如下:( [1 T8 o# r" K- S3 H8 r% v1 Z, I

, n6 x' r. z6 Y& f<?php
# x1 v$ U8 d( I
: ?. W5 I) U* j0 e  g    header("Content-type:text/html;charset=utf-8");
) s1 q6 j: n5 a) a6 [" R: A
$ Y5 @' x8 W4 Z; A' w" s0 i0 a9 T/ b: t" B5 K/ R+ Q1 V% p
//将数据存入二维数组
6 K: C3 p+ m1 |! H1 m6 A$con=array(
6 H1 ~6 u: W. f" z' F/ B    array('文章标题1','文章内容1'),9 C. |1 [8 N! K- P* U# a3 b
    array('文章标题2','文章内容2'),
# h6 W0 n4 W) `" P+ Y    array('文章标题3','文章内容3'),
1 T1 s* x6 s) S& m/ b* F    array('文章标题4','文章内容4'),
; J+ ^' n( t; y2 i    array('文章标题5','文章内容5')4 V7 ^8 r9 |) w- ~/ T' n
);
3 y5 g# ]  l% Y6 K
8 @$ H, _* \1 Z3 w4 `) ]4 E) Jforeach($con as $id=>$val){ //循环生成# T: A) \# m( U: r& I4 B' R7 I* O# }6 J
    $title=$val[0];6 {( h; Q3 |0 ]7 I+ O" A, B
    $content=$val[1];" O$ L  c* L  c& Q" K: F6 Y
    $path="article-".($id+1).".html";
% o" n! g3 [0 e$ z
. G% v$ h9 [- L. C! X( n1 h9 V# A+ R    //替换example内容,并获取内容赋值给$str
/ \' @$ x1 Q' j9 ?% u    $fp=fopen("example.html","r");% O( E8 t6 u  T. C( I( b- e
    $str=fread($fp,filesize("example.html"));
/ C; K. j3 ^: M+ \7 a% S    $str=str_replace("{title}",$title,$str);! j  q* Y$ O% I4 L
    $str=str_replace("{content}",$content,$str);9 V% H0 F9 a$ y+ B
    fclose($fp);* S! X. {3 \  o& w& h

  Z0 S; M+ N5 e8 @6 n3 {  i    //新建空白文件,将$str写入- f1 N& ^; ]0 @/ K) g6 H$ c, T
    $handle=fopen($path,"w");8 n) q; d' W9 s3 @' r
    fwrite($handle,$str);
! L7 l5 M9 t: F    fclose($handle);
! f+ g0 a0 ~9 Q% o+ ?
4 l& s% A' a( v" v  s    echo "生成".$path."<br/>";
) u+ [; }. Y; l) C4 a: q8 A}( j: I' C+ j" l3 f2 j/ Y
?>
8 M, ?$ o6 W! [! P9 G4 a& n! q! U  w+ [  S9 w# O
1 Z. Z' a" E+ n# @- s& R3 K
注解:) w4 c2 }! D9 v; q+ S
+ `. ]( [+ O& Y0 h9 a5 r
fopen(文件名,打开方式),打开文件函数,若无文件,则创建。其返回值为资源型;
& r2 ^5 k3 X' bfread(文件名,读取字节数),读取文件内容及对应的字节数;
1 y; M9 x! o1 }0 Lstr_replace(规定要查找的值,替换被查找值的值,被搜索的字符串),替换函数;4 r' a% M/ y0 f0 v; j  \- H# x
fclose(文件名),关闭文件;
; I: ?6 d/ Q4 f. X* K: r; mfwrite(要写入的打开文件,要写入打开文件的字符串,要写入的最大字节数)。
1 i/ P1 U; h2 L3 ^6 f/ |6 ^

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2020-3-10 13:18:57 | 显示全部楼层
PHP生成HTML的技术要比ASP的技术相对来说要简单一点,下面简要说一下怎样用PHP批量生成HTML技术吧,先看一下面源码:  R! w  G' c: J6 ^* p3 Z& G
- o* S/ t9 S6 [8 q
<?php$ |- Y6 w3 Q+ n6 D* X4 q
if($_POST[button]){3 \9 t* |3 a" s& e3 A2 W

; J) i2 n# b8 u9 `) `3 N$sql="select * from doorsjk_about where id<12";  H- e& g+ d6 y
$rs=$db->query($sql);8 O: e" _5 J: M6 z/ @  A/ _
while($row=$db->fetch_array($rs)){
/ d) |% |  V6 Z* _: ?7 z
$ v% F  N) j2 N7 l$path='list12'.$row[id].'.html';
0 S1 Q0 O" W8 O' x% C
  ]1 I, J$ E9 N$ Q: R, v9 z$fp=fopen("../group/about.html","r");
& |+ V3 Z& n, Q& a$str=fread($fp,filesize("../group/about.html"));7 i) x# Q. g  \
$str=str_replace("{title}",$row[title],$str);
5 o( V+ D! C# F6 W* g$str=str_replace("{name}",$system['name'],$str);: N/ V6 z1 P* ~( e2 p+ K
$str=str_replace("{content}",$row[content],$str);
1 \: Q2 k5 U. Q' n4 C3 L$str=str_replace("{copyright}",$system['copyright'],$str);5 ?. u* s; u5 U8 E9 X
fclose($fp);
9 B! ]8 I9 M9 C! y! F1 L
9 m- \# ^1 Z3 e% f. M6 d$handle=fopen("../group/".$path,"w"); * _& m- ^& B/ v. H8 l$ k- t! {
fwrite($handle,$str);
* L1 W( R) j+ W9 ^- }echo "<font color='red'>正在生成</font>";
4 r* w' Z8 v% G1 \2 Zecho "$path";: Q# p+ j  d2 V0 ^! H4 h
fclose($handle);5 d' e; m+ F+ q/ h* `
}+ m, V9 W! e4 Y
echo "<script>alert('生成成功!');window.location.href='Onlyhtml.php';</script>";7 g" l  m" ~$ G7 K: {2 I
}
2 d( Y6 A) v' O0 Q- ~4 @# K?>. G1 r" N4 L; Q& I) q8 Q; _: v

, s5 d, o& r' \5 q4 r  n( i, S<form id="form1" name="form1" method="post" action="">
& L5 f) u* K5 `6 t* P5 q- U* X* ], K3 ?  <label><div style="margin:200px 200px;"><img src="../images/html.jpg" /># T% {! t' B2 ?8 ?8 D4 ^
  <input type="submit" name="button" id="button" value="单页生成" />& c: w$ @# t' c2 Q( C3 v! m7 s
  </div>
5 {# o' V$ R9 a" L  </label>/ t: Q. X4 _1 }! Q. m: s
</form>
) E4 q9 Z- `0 v$ K5 L& d7 x: f
) ^, R9 R+ o  t5 O9 ^: h8 O    首先将连接数据库的代码包含进来,下面是一个点击的表单,当接受到按钮 button 后,就直接循环生成HTML,这里的$path='list12'.$row[id].'.html';是生成的文件名称,而$fp=fopen("../group/about.html","r");是打开的模板文件,只要做成自己想要的HTML文件就可以了,这里用str_replace函数来做替换的标签,这样就可以在HTML里面调用类似于{title}这样的标签生成HTML文件了,举一反三,简单的HTML批量生成就做成了。
8 ^. f; j; ?, ]& ~$ R2 R
0 u' O- K9 d2 W5 x    在HTML文件里调用标签是:{title} ,这样就直接调到读取的数据库里文件:$row[title],如果数据量很大,可以分段批量生成,就是生成ID:从()到()之间。用limit来接受调用。至于HTML里面要用到的动态文件,比如生成静态后还要统计文章的读取次数,这个动态的调用可以封装成JS文件,嵌入进来就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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