php网页生成程序(php生成静态页面并实现预览功能)
php网页生成程序
php生成静态页面并实现预览功能一、前言
这篇文章主要是记录一下php生成静态页面的大致步骤,关于页面静态化,大家想必都听说过,但是真正用的时候反而不是很多。有些页面考虑到访问量比较大,页面结构又不常改动的,比如新闻公告等,可以考虑做成静态页面放在服务器上,这样第一是能抗住大流量的访问,第二也是更加安全一些,打开速度上有保证。
二、正文
1、什么是静态化
就比如我们平时写项目的时候,大部分的页面都是会传参数进去,通过php标签把这些参数展示出来。因为我们的参数随时可以变化,所以页面上的内容也跟着参数变化,这就是动态化的页面。与之相反,静态化就是纯粹的html,页面上的内容不需要通过php或者java等编程语言来改变。
关于静态化的优点,网上也都说的很清楚了,这边不再一一赘述,总之就是打开速度够快,能抗住大流量访问。
2、静态化写法
(1)第一种写法是通过ob_start()缓存来输出
在php文件中编写html代码,然后用bo_get_content获取到,然后输出到html文件,类似于:
|
<?php //打开输出控制缓存 ob_start(); echo "<html><head><title>test页面</title></head><body>Hello world</body></html>" ; //获取缓冲区的内容 $out = ob_get_contents(); //关闭输出缓存 ob_end_clean(); //打开test.html文件开启写入权限 $fp = fopen ( "test.html" , "w" ); if (! $fp ) { echo "Fail" ; die ; } else { //写入文件 fwrite( $fp , $out ); //关闭文件 fclose( $fp ); echo "Success" ; } |
参考:php输出控制函数和输出函数生成静态页面
这种写法个人感觉会稍微乱一点,而且如果页面复杂的话,写出来的php+html代码会有些杂乱,所以博主选用的是第二种方法。
(2)提前写好模板页,然后进行替换
先准备好静态文件,然后把要替换的部分标出来,如{title},在php程序中用file_get_content获取html文件的内容,然后进行替换,替换之后保存为文件。
模板页:
|
<!DOCTYPE html> < html > < head > < meta charset = "utf-8" > < title >{top_title}</ title > < link rel = "stylesheet" href = " " rel = "external nofollow" > </ head > < body > < li class = "news-details-template" > < h1 >{title}</ h1 > < li class = "author" >{author}</ li > < li class = "date" >{show_time}</ li > < li class = "line" ></ li > < li > {content} </ li > </ li > </ body > </ html > |
我们先编写好模板页面,包括都有哪部分需要替换,基本的样式等,提前写好
php替换:
|
$path = \Yii::getAlias( '@xxx' ). '/views/site/notice-detail.php' ; $content = file_get_contents ( $path ); //引入模板 //获取要替换的值进行字符串的替换 $content = str_replace ( '{top_title}' , $title , $content ); $content = str_replace ( '{title}' , $title , $content ); ....... $dir = $path . "/html/" ; if (! file_exists ( $dir )) { mkdir ( $dir ); } $filename = $dir . '/' . $filename ; //这里就不判断html是否存在了,因为写入会覆盖 $result = file_put_contents ( $filename , $content ); //写入内容到对应静态文件中 |
大概就是先通过file_get_contents获取模板页的内容,然后通过str_replace进行标签的替换,替换完成之后,通过file_pu_contents写入到新文件即可。生成的html,我们可以生成多个html,让前端根据不同的页面去访问不同的html即可。
三、生成预览
生成html之后,一般来说是需要预览给工作人员看看的,毕竟人家也不懂技术,不知道到底生成的是啥
1、使用dialog打开窗口
静态页:
|
//这是我们要打开的窗口,先隐藏 < li id = "dialog-form-record" style = "display:none;" > < li id = "Content_record" > </ li > </ li > |
JS定义底部按钮:
|
var arrButton = { "Release" : { 'text' : '按钮名称' , 'priority' : 'secondary' , 'class' : 'btn btn-success' , 'id' : '' , 'click' :点击事件 }, "Cancel" : { 'text' : 'Cancel' , //取消按钮 'priority' : 'secondary' , "id" : 'xxx' , 'click' : function () { dialogRecord.dialog( "close" ); } } }; //定义宽高 dialogRecord = $( "#dialog-form-record" ).dialog({ autoOpen: false , height: 800, width: 1400, modal: true , buttons:arrButton, close: function () { $( "#Content_record" ).html( "" ); dialogRecord.dialog( "close" ); } }); |
JS打开窗口:
|
//定义标题和窗口大小 $( "#dialog-form-record" ).dialog( "option" , "title" , "Preview Html" ); $( "#dialog-form-record" ).dialog({ modal: true , height: 800, width: 1400 }); |
2、使用iframe引入刚才生成的静态文件
(1)js引入iframe
|
//加个时间戳,防止缓存 for (i in response.) iframe += "<iframe class='news_iframe' id='iframe" + i + "' src='" + response.url.url + "/news/html/" + response.zh[i] + "?timestamp= " + new Date().getTime() + "'></iframe>" ; } //把iframe写入到html $( "#en_content" ).html(iframe); |
3、注意:
(1)iframe的src里面不能有空格之类的东西
(2)iframe去除边框
(3)iframe加载速度慢,所以加个onload事件,当iframe加载完之后再显示
|
var iframe = document.getElementById( "iframe" + count); checkFinishedDownload(iframe); function checkFinishedDownload(ifr) { if (ifr.attachEvent) { ifr.attachEvent( "onload" , function () { //iframe加载完成后你需要进行的操作 }); } else { ifr.onload = function () { //iframe加载完成后你需要进行的操作 }; } } |
最终效果:
以上就是从生成静态页面到预览的整个流程了,博主也是第一次做静态页面相关的东西,还是挺有意思的,打卡记录一下。
希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/LJFPHP/article/details/93846093
- php生成json信息(php使用json-schema模块实现json校验示例)
- php 记录的已读状态(PHP使用观察者模式处理异常信息的方法详解)
- php标签怎么写(php 使用mpdf实现指定字段配置字体样式的方法)
- php微信公众号管理后台(php实现微信公众号创建自定义菜单功能的实例代码)
- phpredis消息队列(PHP+redis实现微博的推模型案例分析)
- php class使用场景(php反射学习之不用new方法实例化类操作示例)
- phpsession如何用(如何解决PHP获取不到SESSION信息之一般情况)
- ubuntu安装php(在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法)
- phpstudy报错(phpStudy运行帝国备份王出错解决方法)
- php7 入门(php7新特性的理解和比较总结)
- thinkphp接口开发实例(ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解)
- php获取数据方法(php定期拉取数据对比方法实例)
- php脚本通过文件路径批量上传文件(php遍历目录下文件并按修改时间排序操作示例)
- php添加数据到mysql数据库(PHP通过代码连接XAMPP数据库及MySQL数据库方法)
- phpstudy搭建网站全过程(phpstudy在本地搭建多个网站的方法)
- docker部署php本地开发环境(CentOS7环境下使用Docker搭建PHP运行环境的过程详解)
- 你知道 七夕 的真正含义吗(你知道七夕的真正含义吗)
- 七夕的寓意(七夕的寓意)
- 苏志燮赵恩静结婚,韩国四大公共财产变三人,这么快就有替补了(苏志燮赵恩静结婚)
- 《内在美》后,一大波新韩剧来袭,李钟硕朴信惠宋慧乔玄彬回归(一大波新韩剧来袭)
- 给孩子选购保温杯,注意这4个步骤,比颜值更重要(给孩子选购保温杯)
- 保温好 容量大 颜值高 保温杯你给娃娃买对了吗(保温好容量大颜值高)
热门推荐
- mysql 死锁产生的原因和必要条件(Mysql查看死锁与解除死锁的深入讲解)
- docker配置redis集群(基于Docker搭建Redis主从集群的实现)
- cssbackground(用 CSS background 实现刻度线的呈现)
- nginx 一个域名对应多个项目(nginx前后端同域名配置的方法实现)
- 去除inline-block元素间的间隙
- vue左右滑动切换(vue实现界面滑动效果)
- 阿里云服务器防御(阿里云服务器攻击超过云盾防御阀值应该怎么办?)
- apache的优化建议(Apache 网站速度更快)
- html的css中怎么选择第三个子元素(CSS中 opacity的设置影响了index层数的改变的问题总结推荐)
- php开发api接口登录(PHP调用接口API封装的例子)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9