热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php生成html静态页面的二种方法

在我之前所见的文章中要不是用代码堆砌空间就是用高手与高手交流用的语言让新人望而生却,因此本文尽量把整体思路说得详尽点.两种方法简单说明如下:一,利用PHP的输出控制函数(OutputContr...
在我之前所见的文章中要不是用代码堆砌空间就是用高手与高手交流用的语言让新人望而生却,因此本文尽量把整体思路说得详尽点.

两种方法简单说明如下:

一,利用PHP的输出控制函数(Output Control)得到静态页面字符串,再写入到新的文件中.

使用说明:

1、实例化,代码如下:

$cache = new Cache();

2、设置缓存时间和缓存目录

$cache = new Cache(60,'/any_other_path/');

第一个参数是缓存秒数,第二个参数是缓存路径,根据需要配置,默认情况下,缓存时间是 3600 秒,缓存目录是 cache/.

3、读取缓存,代码如下:

get('data_key');
4、写入缓存 $value = $cache->put('data_key', 'data_value');
完整实例: $cache = new Cache();
//从缓存从读取键值 $key 的数据
$values = $cache->get($key);
//如果没有缓存数据
if ($values == false) {
    //insert code here...
    //写入键值 $key 的数据
    $cache->put($key, $values);
} else {
    //insert code here...
    
}
?>

Cache.class.php

cache_expire = $exp_time;
        $this->cache_path = $path;
    }
    //returns the filename for the cache
    private function fileName($key) {
        return $this->cache_path . md5($key);
    }
    //creates new cache files with the given data, $key== name of the cache, data the info/values to store
    public function put($key, $data) {
        $values = serialize($data);
        $filename = $this->fileName($key);
        $file = fopen($filename, 'w');
        if ($file) { //able to create the file
            fwrite($file, $values);
            fclose($file);
        } else return false;
    }
    //returns cache for the given key
    public function get($key) {
        $filename = $this->fileName($key);
        if (!file_exists($filename) || !is_readable($filename)) { //can't read the cache
            return false;
        }
        if (time() <(filemtime($filename) + $this->cache_expire)) { //cache for the key not expired
            $file = fopen($filename, "r"); // read data file
            if ($file) { //able to open the file
                $data = fread($file, filesize($filename));
                fclose($file);
                return unserialize($data); //return the values
                
            } //开源代码phprm.com
            else return false;
        } else return false; //was expired you need to create new
        
    }
}
?>

二,利用模板生成

什么是模板?如果大家使用过Dreamwerver中的"另存为模板"就应该知道模板是用来统一风格的东西,它只让你修改页面的某一部分,当然这"某一部分"是由你来确定的,本文在这说的模板也就是这个意思,此外,PHP模板技术还包括phplib、smarty等等,这不是本文所说内容了.

把模板的概念结合本文再说得具体一点就是:美工先做好一个页面,然后我们把这个页面当作模板(要注意的是这个模板就没必要使用EditRegion3这样的代码了,这种代码是Dreamwerver为了方便自己设计而弄的标识),把这个模板中我们需要改变的地方用一个与HTML可以区分的字符代替,如"{title}"、"[title]"。在生成静态页面的时候只需要把数据和这些字符串替换即可。这就是模板的含义了.

步骤:

1.新建一个php页面和一个html页面[模板页];注:如果是从数据库调用数据,则将数据以数组的形式保存,然后循环生成;

2.在php页面,打开html页面->读取html页面的内容->替换参数->新建(打开)一个新的html页面->将替换的内容写入新文件中->关闭新文件->生成成功;代码如下:

 $value) {
        $title = $value[0];
        $cOntents= $value[1];
        //echo $title.&#39;&#39;.$contents.&#39;&#39;;
        $path = $key . &#39;.html&#39;;
        $open = fopen("template.htm", "r"); //打开模板文件
        $handle = fread($open, filesize("template.htm")); //读取模板文件内容
        $cOntent= str_replace("{title}", $title, $handle); //替换
        $cOntent= str_replace("{contents}", $contents, $handle);
        $newtemp = fopen($path, "w"); //用写入方式打开一个不存在(新)的页面
        fwrite($newtemp, $content); //将刚刚替换的内容写入新文件中
        fclose($newtemp);
        echo "生成";
    }
?>


教程地址:

欢迎转载!但请带上文章地址^^

推荐阅读
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了求解gcdexgcd斐蜀定理的迭代法和递归法,并解释了exgcd的概念和应用。exgcd是指对于不完全为0的非负整数a和b,gcd(a,b)表示a和b的最大公约数,必然存在整数对x和y,使得gcd(a,b)=ax+by。此外,本文还给出了相应的代码示例。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 电销机器人作为一种人工智能技术载体,可以帮助企业提升电销效率并节省人工成本。然而,电销机器人市场缺乏统一的市场准入标准,产品品质良莠不齐。创业者在代理或购买电销机器人时应注意谨防用录音冒充真人语音通话以及宣传技术与实际效果不符的情况。选择电销机器人时需要考察公司资质和产品品质,尤其要关注语音识别率。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
author-avatar
纽约纽约MrWaNg
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有