[原创] 利用前端+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 ...
随机推荐
- HTML5 模拟现实物理效果
Ball Pool 是一个基于 HTML5 技术的实验,模拟现实物理效果,让你在 Web 中感受自然物体的运动.玩法介绍:可以随意拖动圆球.点击页面背景.晃动浏览器.双击页面背景或者按住鼠标左键,有不 ...
- 【算法系列学习】线段树 区间修改,区间求和 [kuangbin带你飞]专题七 线段树 C - A Simple Problem with Integers
https://vjudge.net/contest/66989#problem/C #include<iostream> #include<cstdio> #include& ...
- iOS关于Cookie验证登录状态
1.第一次进入应用,登录获取Cookie,此时如果用到的是AFN去获取接口数据,Cookie已经写入了,所以无需处理,每次请求的时候,会自动将该cookie传给后台去验证 2.将Cookie缓存到本地 ...
- python3 selenium 如何处理异常情况
使用场景: 1.元素只有在某一特定情况下才会出现 2.元素定位不到 使用方法: try: except exceptions.NoSuchElementException: 举例说明: # _._ c ...
- OC中Foundation框架之NSDictionary、NSMutableDictionary
NSDictionary概述 NSDictionary的作用类似:通过一个key ,就能找到对应的value 同样 NSDictionary是不可变的,一旦初始化完毕,里面的内容就无法修改 NSDic ...
- 根据优先关系矩阵使用逐次加一发构造优先函数(Java)
若已知运算符之间的优先关系,可按如下步骤构造优先函数: 1.对每个运算符a(包括#在内)令f(a)=g(a)=1 2.如果a⋗b且f(a)<=g(b)令f(a)=g(b)+1 3.如果a⋖b且f ...
- 工具类总结---(四)---Sharedpreferences保存
用于保存具有对应关系的键值对 import android.content.Context; import android.content.SharedPreferences; import java ...
- Java IO详解(一)------字节输入输出流
File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...
- ScheduledFuture和RunnableScheduledFuture详解
ScheduledFuture java.util.concurrent 接口 ScheduledFuture<V> 类型参数: V - 此 Future 返回的结果类型. 所 ...
- mongodb新人扫盲
前言 数据库基本命令 集合(表)命令 增加数据 删除数据 更新数据 使用update()更新 使用save()命令实现upsert 自动更新信息 查询数据 mongoose的使用 前言 mongodb ...