php页面静态化 适用于添加 更新文章内容 模板文件生成html

一  页面静态化有利有弊 合理的使用php生成html完成网站 静态化设计

1  有利于seo

2  有利于对于一些不经常更新的内容 提高访问效率

二  两种方式去实现静态化

1. 使用文件函数得到静态页面的模板字符串,然后用str_replace函数将需要替换的东西替换了再写入到新的文件中。
2. 利用PHP的输出控制函数(Output Control)得到静态页面字符串,再写入到新的文件中。

本文只讲第一种方式 后续会更新第二种

1 简单的html页面用于添加文章

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <style>
            a:link{
                color:rgb(10,10,10);
                text-decoration: none;
            }
           form ul li{
                list-style: none;
               }
        </style>
        <script charset="utf-8" src="mykindeditor/kindeditor.js"></script>
        <script charset="utf-8" src="mykindeditor/lang/zh_CN.js"></script>
        <script>
        KindEditor.ready(function(K) {
                window.editor = K.create('#editor_id');
        });
        </script>
    </head>
    <body>
       <form name="addart" action="addart.php" method="post">
            <ul style="float:left;">
                <li style="width:50px;height:28px;"> 标题</li>
                <li style="height:28px;">作者</li>
                <li style="height:28px;">内容</li>
            </ul>
            <ul>                
                <li><input type="text" name="title" style="width:300px;height:28px;border:solid 1px activeborder;" ></li>
                <li><input type="text"  name="autoher" style="width:250px;height:28px;border:solid 1px activeborder;margin-top:10px;"></li>
                <li><textarea id="editor_id" name="content" style="width:400px;height:300px;margin-top:10px;"></textarea></li>
                <li><input value="重置" type="reset"><input value="提交" type="submit"></li>
            </ul>
        </form>
        <!--<ul>
         <li>最新动态</li>
         <li><a href="html/art_1.html">刘云山对芬兰进行正式访问</a></li>
         <li><a href="html/art_2.html">新疆和田警民联手制服3名歹徒 9个暴恐团伙被破获</a></li>
         <li><a href="html/art_3.html">中国驻菲使馆:在菲遭抢劫并非有意针对中国游客</a></li>
         <li><a href="html/art_4.html">伊拉克极端武装处决大批政府军士兵(图)</a></li>
         <li><a href="html/art_5.html">中国今起实施年内第二次定向降准 力挺三农小微</a></li>
         </ul> -->
    </body>
</html>
2 添加文章处理页面
<?php
header("Content-type:text/html;charset=utf-8");
require 'common/fileGenerate.class.php';
require 'common/connect.class.php';
$title=htmlspecialchars($_POST['title']);
$autoher=htmlspecialchars($_POST['autoher']);
$content=htmlspecialchars($_POST['content']);
$db=new connect();
$sql="insert into artnews(title,content,autoher)VALUES('$title','$content','$autoher')";
$insert_id=$db->query($sql);
$filename=date('Ymdhis')."_".$insert_id.".html";
$fileGenerate=new fileGenerate();
$fileGenerate->htmlfile($filename,$title,$autoher,$content);
?>
3 生成文件类

<?php
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 * Description of fileGenerate
 *
 * @author Administrator
 */
class fileGenerate {
    //html文件按照模板生成函数
    public function htmlfile($filename,$title,$autoher,$content){ 
        //判断静态文件是否存在不存在直接生成 存在删除重新生成
        if(file_exists($filename)){
            unlink($filename);
        }else {            
            $filemodel="art.html";                        //#模板地址
            $file=fopen($filemodel,"rb");                 //#打开模板,得到文件指针
            $temp=fread($file,filesize($filemodel));      //#得到模板文件html代码
            //替换摸版中的内容
            $temp=str_replace("[title]",$title,$temp);
            $temp=str_replace("[autoher]",$autoher,$temp);
            $temp=str_replace("[content]",$content,$temp);
            //生成html文件            
            fwrite(fopen("html/"."$filename","wb"),$temp); #$filename是静态页面的文件名
            if(file_exists("html/"."$filename")){
                echo 'html生成完成';
            }else{
                echo 'html生成失败';
            }
        }
    }
    
}
4 数据库连接

<?php
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 * Description of connect
 *
 * @author Administrator
 */
class connect {
    //数据库连接
    private $host;
    private $user;
    private $pwd;
    private $dbname;
    private $port;
    private $charset;
    public function __construct(){
        $this->host='localhost';
        $this->user='root';
        $this->pwd='';
        $this->dbname='phptest';
        $this->charset='set names utf8';
        $this->getConnect();
    }
    public function getConnect(){
        $con=@mysql_connect($this->host,$this->user,$this->pwd);
        mysql_select_db($this->dbname)or die("not found.$this->dbname");
        mysql_query($this->charset);
    }
    function query($sql){
        mysql_query($sql);
        return $insert_id=mysql_insert_id();
    }
}
下面给出 源码 数据库sql文件 的下载地址

http://pan.baidu.com/s/1gdIJAPd

有什么不足或是建议 也请大家评论留言




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Php 生成静态html文件 总结有如下三种方法 1,下面使用模版的一个方法! <?php $fp = fopen ("templets.html","a"); if ($fp){ $fup = fread ($fp,filesize("templets.html")); $fp2 = fopen ("html.shtml","w"); if ($fwrite ($fp2,$fup)){ $fclose ($fp); $fcolse ($fp2); die ("写入模板成功"); } else { fclose ($fp); die ("写入模板失败!"); } } ?> 简单的将模板写进一个文件中存为html. 2,按时间生成html文件名 <? $content = "这是一个以日期时间为文件名的静态生成网页的测试文件文件名格式一般为<font color=#ff0000>年月日时分秒.html</font>"; $date = date('YmdHis'); $fp = fopen (date('YmdHis') . '.html',"w");//本函数可用来打开本地或者远端的文件 'w' 开文件方式为写入,文件指针指到开始处,并将原文件的长度设为 0。若文件不存在,则建立新文件。 if (fwrite ($fp,$content)){//格式是.int fwrite(int fp(文件名), string string(内容), int [length](长度));本函数将字符串 string 写入文件资料流的指针 fp 上。若有指定长度 length,则会写入指定长度字符串,或是写到字符串结束。 fclose ($fp);//函数用来关闭已经打开的文件的指针 fp。成功返回 true,失败则返回 false。 die ("写入模板成功"); } else { fclose ($fp); die ("写入模板失败!"); } echo ($content); ?> 3,下面为转换文件名的一个方法 <?php $s_fname = "93e.php"; $o_fname = "93e.htm"; ob_end_clean(); ob_start(); include($s_fname); $length = ob_get_length(); $buffer = ob_get_contents(); $buffer = eregi_replace("r","",$buffer); ob_end_clean(); $fp = fopen($o_fname,"w+"); fwrite($fp,$buffer); fclose($fp); ?> 这样就可以把 93e.php静态HTML文件了 要注意的是待转换的文件里不能有 ob_end_clean();和 ob_start();语句。 且目录要有写权限。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值