[原创] 利用前端+php批量生成html文件,传入新文本,输出新的html文件
本人因为要想自己写个小说网站练练手,在其中遇到的一些问题,将其解决方法总结出来,例如:
1:小说网站存储了大量的小说,每个小说主页都很相似,url不同,不是使用的history属性改写的,所以如果人工想写的话,那工作量就很大
如下图,用起点小说网来参考,放上我最爱的两本书
在这里我们将其url都当成html文件,不考虑url重写问题
所以,今天我就将我的解决方案放入其中,算是批量生成html文件
先写个数据提交网页:文件名为other.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!--输入你想让显示的内容--> <input type="text" name="name" id="name" value="" /> <!--提交ajax--> <button id="btnn">提交</button> <!--提交成功后,则会通过数据库连接获取连接地址--> <a href="" target="_blank"></a> <!--js--> <script src="//115.159.30.160/js/jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> $("#btnn").on('click',function(){ var name = $("#name").val(); //jq 的ajax请求 $.ajax({ type:"post", url:"//127.0.0.1:9090/Project01/php/creathtml.php", async:true, data:{"name":name}, dataType:"JSON", success:function(r){ console.log(r.token); var hr="http://127.0.0.1:9090/Project01/php/ceshi/"+r.token+".html"; $('a').attr('href',hr);//改变a链接地址 $('a').text(r.token);//改变a链接访问跳转 } }); }) </script> </body> </html>
接下来为php处理接受数据:文件名为creathtml.php
<?php //引入mysql连接配置 require './config.php'; //接受other.html ajax请求过来的数据 $name = $_POST['name']; //ajax的data:{"name":name} //判断$name是否存在 if (isset($name)) { //mysql查询语句 $query_select = 'SELECT t1.token FROM ceshi t1 WHERE content="' . $name . '"'; //运行mysql语句,返回MySQL查询结果集,是个句柄 $result_select = @mysql_query($query_select) or die($error); //将mysql查询结果集转为数组 $row_select = mysql_fetch_array($result_select, MYSQL_ASSOC); //判断是否存在,存在则结束,本文为了方便,不写重复结果的返回处理 if ($row_select) { echo "if(row)"; } else {//输入的不存在 //将其内容插入进去,并且生成个唯一标识符token,并对uuid处理 使其从 1600d45d-42e1-11e7-8106-1C39472981ff 转为 1600D45D42E111E781061C39472981FF $query_insert = 'INSERT INTO ceshi VALUES(UPPER(REPLACE(UUID(),"-","")),"' . $name . '")'; $result_insert = @mysql_query($query_insert) or die($error); //查询出其内容对应的token $query_token = 'SELECT t1.token FROM ceshi t1 WHERE content="' . $name . '"'; $result_token = @mysql_query($query_token) or die($error); $row_token = mysql_fetch_array($result_token, MYSQL_ASSOC); //将其token值提取处理 $token = $row_token[token]; //在本程序文件下,将其创建的目录写成字符串 $path = "ceshi/"; //判断目录是否存在 if (is_dir($path)) {//目录存在,则直接复制并且重命名文件 //找到模板文件 $old = "win.html"; //复制的新文件写成一个字符串 $new = $path . $token . '.html'; //将其复制到上面创建的目录中,并且重命名为token copy($old, $new); //token的数组转为json数据返回 ajax请求的为dataType:"JSON" echo json_encode($row_token, JSON_UNESCAPED_UNICODE); } else { //目录不存在则创建 $res = mkdir($path); if ($res) { $old = "win.html"; $new = $path . $token . '.html'; copy($old, $new); echo json_encode($row_token, JSON_UNESCAPED_UNICODE); } else { echo "目录 $path 创建失败"; } } } } else { header('Location: http://127.0.0.1:9090/Project01/php/other.html'); } ?>
接下来写模板文件:文件名为win.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1 class="h1"></h1> <script src="//115.159.30.160/js/jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> $(document).ready(function(){ /* * 获取url的信息http://127.0.0.1:9090/Project01/php/win.html将其中的win获取出来 * 在复制的html中是win你输入的内容的token值, * */ var strUrl=window.location.href; var arrUrl=strUrl.split("html"); var strPage=arrUrl[0]; var last=strPage.split("/"); var filenameadd=last[last.length-1]; var filename=filenameadd.substring(0,filenameadd.length-1); //通过获取到的值,进行数据查询 $.ajax({ type:"post", url:"//127.0.0.1:9090/Project01/php/win.php", async:true, data:{"content":filename}, dataType:"JSON", success:function(r){ var h1=$(".h1"); h1.text(r.content); //修改文本内容 $(document).attr("title",r.content); //修改title内容 } }); }) </script> </body> </html>
接下来了便是复制成功后页面请求提交数据:文件名为:win.php
<?php /* * 一些注释在creathtml.php文件中已写 * */ require './config.php'; $win=$_POST['content']; if(isset($win)){ $query_content = 'SELECT t1.content FROM ceshi t1 WHERE token="'.$win.'"'; $result_content = @mysql_query($query_content) or die($error); $row_content = mysql_fetch_array($result_content, MYSQL_ASSOC); //将其请求的内容返回 echo json_encode($row_content,JSON_UNESCAPED_UNICODE); }else{ header('Location: http://127.0.0.1:9090/Project01/php/other.html'); } ?>
下面是测试截图:
一:未开始前
MySQL
文件目录中:
二:使用开始
网页截图:
输入内容
点击提交
点击链接
mysql截图:
文件目录截图
至此传入数据,生成对应的html文件已成功,想要内容更好点,再添加点内容即可
注:本文为博主原创,允许所有人转载,但是请注明原文档出处
[原创] 利用前端+php批量生成html文件,传入新文本,输出新的html文件的更多相关文章
- 如何利用Excel快速批量生成想要的代码
如何利用Excel快速批量生成想要的代码 使用场景 在HTML DOM Video 对象这个页面 我想要将所有的中文描述和对应的属性(共32个属性)打印出来--console.log(descript ...
- 用备份控制文件做不完全恢复下的完全恢复(全备<老>--备份控制文件<次新>--删除表空间andy--日志文件<新>)
为什么会使用备份的控制文件? 实际工作中主要有两种情况:第一种:当前控制文件全部损坏,而数据文件备份,控制文件备份及当前日志处于不同SCN版本,它们之间又增加过表空间(数据文件).第二种:当前控制文件 ...
- FluentData-新型轻量级ORM 利用T4模板 批量生成多文件 实体和业务逻辑 代码
FluentData,它是一个轻量级框架,关注性能和易用性. 下载地址:FlunenData.Model 利用T4模板,[MultipleOutputHelper.ttinclude]批量生成多文件 ...
- 利用Resgen.exe 批量生成resources文件
Resgen.exe(资源文件生成器) 您可以直接如图操作 转换时在 文本中先写好要转换的文件然后 全选 复制到控制台中 Filename.resx 要转换的文件 ResName1.resource ...
- 利用strut2标签自动生成form前端验证代码
利用strut2标签自动生成form前端验证代码,使用到的技术有1.struts2标签,如<s:form> <s:textfieled>2.struts2读取*Validati ...
- C# 利用WORD模板和标签(bookmark) 批量生成WORD
前言: 由于对C#操作WORD不熟悉,也就留下这么一篇水文,别吐糟...=_=||| 利用Microsoft.Office.Interop.Word (2003版也就11版)——因为部分客户端还是用O ...
- 脚本工具(获取某个文件夹下的所有图片属性批量生成css样式)
问题描述: 由于有一次工作原因,就是将某个文件夹下的所有图片,通过CSS描述他们的属性,用的时候就可以直接引用.但是我觉得那个文件夹下的图片太多,而且CSS文件的格式又有一定的规律,所有想通过脚本来生 ...
- php 批量生成html、txt文件
首先建立一个conn.php的文件用来链接数据库 <?php $link = mysql_connect("mysql_host" , "mysql_use ...
- 批量生成sqlldr文件,高速卸载数据
SQL*Loader 是用于将外部数据进行批量高速加载的数据库的最高效工具,可用于将多种平面格式文件加载到Oracle数据库.SQL*Loader支持传统路径模式以及直接路径这两种加载模式.关于SQL ...
随机推荐
- 针对Mac的DuckHunter攻击演示
0x00 HID 攻击 HID是Human Interface Device的缩写,也就是人机交互设备,说通俗一点,HID设备一般指的是键盘.鼠标等等这一类用于为计算机提供数据输入的设备. DuckH ...
- 用PetaPoco为ASP.NET已有数据库建模
序:最近一直在抓紧重构公司的网站,没有很多时间去写博客,积累了很多的问题,几乎是一天一个,折腾死了,尤其是在模型方面几经周折. 以前,多半从事PHP开发,很少接触到模型(thinkphp中模型),但是 ...
- spark2.0系列《一》—— RDD VS. DataFrame VS. DataSet
虽说,spark我也不陌生,之前一直用python跑的spark,基本的core和SQL操作用的也是比较熟练.但是这一切的基础都是在RDD上进行操作,即使是进行SQL操作也是将利用SpaekConte ...
- Sublime 3 如何使用列编辑模式
前言 作为一名运维人员,文本IDE的列编辑模式对工作效率的提升很大.以前总用UE,觉得UE的列编辑模式设置很人性化(alt+c).后来接触了sublime,个人觉得它的列编辑模式使用对比UE略有差距. ...
- 微信小程序,前端大梦想(五)
微信小程序之综合应用-访问网络加载数据 移动端访问网络加载数据时必不可少的功能,本章将接入豆瓣电影API,以列表的形式展现数据,支持下拉刷新及点击查看详情.重点包括: l 访问网络 l 跳转画面及传参 ...
- DCalendar增加月份选择功能--简单jQuery日期选择器插件改动
做时间插件的时候,很多都会遇到要做选择月份的插件,但是DCalendar提供的api只支持日期选择,最近遇到这个问题,所以调整了一下源码,话不多说,先看效果吧 点击日期插件,出现上图,再点击月份就直接 ...
- 思考一个关于Lambda表达式做为linq条件的问题
有一个集合如下 List<User> users = new List<User> { new User{Name = "1",Aget = 12}, ne ...
- MySQL 的性能(上篇)—— SQL 执行时间分析
简介 文中内容均为阅读前辈的文章所整理而来,参考文章已在最后全指明 本文分为上下两篇: 上篇:MySQL 的 SQL 执行时间分析 下篇:MySQL 性能优化 后端开发必然会接触到数据库,数据层的优劣 ...
- 【小错误】WPF代码报错:未将对象引用设置到对象的实例。
今天编写动态创建Image对象的代码时候,报出了下面的错误: 起初还以为我创建的BitmapImage对象出现了问题,设置断点调试了下代码发现BitmapImage里面是有数据的. 我就郁闷了,后来发 ...
- 作为.net程序员学jsp,伤不起
<%@page import="java.sql.*"%> <%@ page language="java" import="jav ...