首页 > 开发 > PHP > 正文

php生成静态页面程序

2024-05-04 23:06:21
字体:
来源:转载
供稿:网友

生成静态页面是php中来减少服务器负载与seo网站优化一个不错的选择,所以php生成静态页面功能是几乎所有php程序员必须了解并掌握的一个知识点,下面我来给大家介绍php生成静态页面原理分析吧.

生成html原理分析

我们把要生成的标签写成一个模板文件,然后再利用php读取把指定标签替换成我们要替换内容就可以了,现在主流的dedecms系统也是这么做的

生成静态页面代码,模板即尚未填充内容html文件,例如如下代码:temp.html

  1. <HTML> 
  2. <TITLE>{ title }</TITLE> 
  3. <BODY> 
  4. this is a { file } fileArray;s templets 
  5. </BODY> 
  6. </HTML> 

templetest.php

  1. <?php 
  2.   $title = "拓迈国际测试模板"
  3.   $file  = "TwoMax Inter test templet,<br>author:Matrix@Two_Max"
  4.   $fp  = fopen ("temp.html","r"); 
  5.   $content  = fread ($fp,filesize ("temp.html")); 
  6.   $content .= str_replace ("{ file }",$file,$content); 
  7.   $content .= str_replace ("{ title }",$title,$content); 
  8.   echo $content
  9. ?> 

这样一个超简单的php生成静态页面的功能就实现了,但实现应用中这个不实用的,下面我介绍一个从数据库到生成实例。

1.创建测试数据库test,建立user表如下,自己插入几条测试数据库,代码如下:

  1. CREATE TABLE IF NOT EXISTS `news` ( 
  2.   `id` int(10) NOT NULL AUTO_INCREMENT, 
  3.   `title` varchar(128) DEFAULT NULL
  4.   `content` text, 
  5.   `timeint(10) DEFAULT NULL
  6.   PRIMARY KEY (`id`) 
  7. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ; 

2.建立连接数据文件conn.php,代码如下:

  1. <?php 
  2.  $dsn = "mysql:host=localhost;dbname=test;"
  3.  $user = "root"
  4.  $password = ""
  5.  try{ 
  6.   $dbh = new PDO($dsn,$user,$password); 
  7.  }catch(PDOException $e){ 
  8.   echo "连接失败".$e->getMessage(); 
  9.  } 
  10. ?> 

3.显示新闻列表news.php,注意,其连接为静态html连接,这时还没生成,当然链接打不开,代码如下:

  1. <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
  2. <a href="add.php">添加文章</a> 
  3. <hr> 
  4. <?php 
  5.  require_once "conn.php"
  6.  $sql = "select * from news"
  7.  foreach($dbh->query($sqlas $row){ 
  8.   echo "<a href='news_{$row['id']}.html'>{$row['title']}</a>----<a href='add.php?id={$row['id']}'>修改文章</a><br>"
  9.  } 
  10. ?> 

4.添加修改文章页面,代码如下:

  1. <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
  2. <?php 
  3.  //获取修改的内容 
  4.  if($_GET['id']){ 
  5.   require_once "conn.php"
  6.   $sql = "select * from news where id={$_GET['id']}"
  7.   $res = $dbh->query($sql)->fetch(); 
  8.  } 
  9. ?> 
  10. <form action="action.php" method="post"
  11.  标题:<input type="text" name="title" value="<?=@$res['title']?>"/><br/> 
  12.  内容:<textarea name="content" col=40 row=4><?=@$res['content']?></textarea><br/> 
  13.  <input type="hidden" name="id" value="<?=$_GET['id']?>" /> 
  14.  <input type="submit" name="submit" value="<?php echo $_GET['id'] ? '修改' : '添加'?>" /> 
  15. </form> 

5.用于生成静态文件的页面模板template.html,代码如下:

  1. <html> 
  2. <head> 
  3. <title>{title}</title> 
  4.   <meta http-equiv="content-type"content="text/html; charset=UTF-8"/> 
  5. </head>       
  6. <body> 
  7. {title}发表于{time} 
  8. <hr> 
  9. {content} 
  10. </body> 
  11. </html> 

6.action.php当然是用来生成和更新静态文件的,代码如下:

  1. <?php 
  2.  //表单处理操作 
  3.  header("content-type:text/html;charset=utf-8"); 
  4.  require_once 'conn.php'
  5.  $title = $_POST['title']; 
  6.  $content = $_POST['content']; 
  7.  $time = time(); 
  8.  if($_POST['submit']=='添加'){ 
  9.   $sql = "insert into news values('','$title','$content',$time)"
  10.   $dbh->query($sql); 
  11.   $id = $dbh->lastInsertId(); 
  12.   $filename = "news_{$id}.html"
  13.   $fp_tmp = fopen("template.html","r"); 
  14.   $fp_html = fopen($filename,"w"); 
  15.   while(!feof($fp_tmp)){ 
  16.    $row = fgets($fp_tmp); 
  17.    $row = replace($row,$title,$content,date('Y-m-d H:i:s',$time)); 
  18.    fwrite($fp_html,$row); 
  19.   } 
  20.   fclose($fp_tmp); 
  21.   fclose($fp_html); 
  22.   echo "添加成功并生成静态文件"
  23.  }else
  24.   $sql = "update news set title = $title , content = $content ,time = $time where id ={$_POST['id']}"
  25.   $dbh->query($sql); 
  26.   $filename = "news_{$_POST['id']}.html"
  27.   @unlink($filename); 
  28.   $fp_tmp = fopen("template.html","r"); 
  29.   $fp_html = fopen($filename,"w"); 
  30.   while(!feof($fp_tmp)){ 
  31.    $row = fgets($fp_tmp); 
  32.    $row = replace($row,$title,$content,date('Y-m-d H:i:s',$time)); 
  33.    fwrite($fp_html,$row); 
  34.   } 
  35.   fclose($fp_tmp); 
  36.   fclose($fp_html); 
  37.   echo "更新成功并更新静态文件"
  38.  } 
  39.  //逐行替换函数 
  40.   function replace($row,$title,$content,$time){ 
  41.    $row=str_replace("{title}",$title,$row); 
  42.    $row=str_replace("{content}",$content,$row); 
  43.    $row=str_replace("{time}",$time,$row); 
  44.    return $row
  45.  } 
  46. ?> 
这样一个完整生php生成静态页面的系统就完成了.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表