当前位置:编程学习 > > 正文

php网页生成程序(php生成静态页面并实现预览功能)

时间:2022-03-29 10:48:26类别:编程学习

php网页生成程序

php生成静态页面并实现预览功能

一、前言

这篇文章主要是记录一下php生成静态页面的大致步骤,关于页面静态化,大家想必都听说过,但是真正用的时候反而不是很多。有些页面考虑到访问量比较大,页面结构又不常改动的,比如新闻公告等,可以考虑做成静态页面放在服务器上,这样第一是能抗住大流量的访问,第二也是更加安全一些,打开速度上有保证。

二、正文

1、什么是静态化

就比如我们平时写项目的时候,大部分的页面都是会传参数进去,通过php标签把这些参数展示出来。因为我们的参数随时可以变化,所以页面上的内容也跟着参数变化,这就是动态化的页面。与之相反,静态化就是纯粹的html,页面上的内容不需要通过php或者java等编程语言来改变。

关于静态化的优点,网上也都说的很清楚了,这边不再一一赘述,总之就是打开速度够快,能抗住大流量访问。

2、静态化写法

(1)第一种写法是通过ob_start()缓存来输出

在php文件中编写html代码,然后用bo_get_content获取到,然后输出到html文件,类似于:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • <?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文件的内容,然后进行替换,替换之后保存为文件。

    模板页:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • <!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替换:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • $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打开窗口

    静态页:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • //这是我们要打开的窗口,先隐藏
  • <li id="dialog-form-record" style="display:none;">
  •  <li id="Content_record">
  •  
  •  </li>
  •  </li>
  • JS定义底部按钮:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 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打开窗口:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • //定义标题和窗口大小
  •  $( "#dialog-form-record" ).dialog( "option", "title", "Preview Html" );
  •  
  •  $( "#dialog-form-record" ).dialog({
  •  modal: true,
  •  height: 800,
  •  width: 1400
  •  });
  • 2、使用iframe引入刚才生成的静态文件

    (1)js引入iframe

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • //加个时间戳,防止缓存
  • 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加载完之后再显示

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • var iframe = document.getElementById("iframe" + count);
  •  checkFinishedDownload(iframe);
  •  
  • function checkFinishedDownload(ifr) {
  •  if (ifr.attachEvent) {
  •  ifr.attachEvent("onload", function() {
  •  //iframe加载完成后你需要进行的操作
  •  });
  •  } else {
  •  ifr.onload = function() {
  •  //iframe加载完成后你需要进行的操作
  •  
  •  };
  •  }
  • }
  • 最终效果:

    php网页生成程序(php生成静态页面并实现预览功能)

    以上就是从生成静态页面到预览的整个流程了,博主也是第一次做静态页面相关的东西,还是挺有意思的,打卡记录一下。

    希望对大家的学习有所帮助,也希望大家多多支持开心学习网。

    原文链接:https://blog.csdn.net/LJFPHP/article/details/93846093

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐