php实现TXT小说章节解析、小说章节在线阅读
每天学习一点点 编程PDF电子书、视频教程免费下载:
http://www.shitanlife.com/code
要实现TXT文本章节的解析,大概思路是在每个章节加入了特定的字符,然后根据字符的起始位置读取章节。这里我写了一个小说阅读项目,也是根据这个思路进行。
实现步骤:
1. 解析TXT文件,生成章节内容
1. 编辑TXT文件,在每个章节名称加入我自己定义的一个字符串,用以识别。
2.识别章节,获取到章节列表
3.根据自定义的字符串,循环读取每个章节的内容,并生成每个章节的TXT文件
2.获取章节列表,实现获取章节内容接口
1. 章节列表接口
2. 章节内容接口
源码:
1.解析TXT文件,生成章节内容
<?php
header("content-type:text/html;charset=utf-8"); $artName = $_GET["artname"]; if(!$artName){
echo "文件名没有哦";exit();
} $fromFileName = "../".$artName.".txt";
if(!file_exists($fromFileName)){
echo "源文件不存在啊";exit();
} $distDirName = $artName; $myfile = fopen($fromFileName, "r") or die("Unable to open file!");
$content = fread($myfile,filesize($fromFileName));
fclose($myfile);
echo "<br>读取原始文件成功.............."; $pattern='/#titlestart#(.*?)#titleend#/is';
preg_match_all ($pattern, $content, $result, PREG_PATTERN_ORDER); echo "<br><br>文章目录识别成功..............<br><br>"; // 获取到目录
// 目录数组 $result[1]
$catalogStr = "";
$catalogArr = array();
foreach($result[1] as $v){
array_push($catalogArr,$v);
$catalogStr .= $v."#catalog#";
} // 创建书本目录
$dir = iconv("UTF-8", "GBK", "./books/".$distDirName);
if (!file_exists($dir)){
mkdir ($dir,0777,true);
echo '<br>创建文件夹bookdir成功<br><br>';
} else {
echo '<br>需创建的文件夹bookdir已经存在<br><br>';
} // 生成目录文件
$myfile = fopen($dir."/catalog.txt", "w") or die("Unable to open file!");
fwrite($myfile, $catalogStr);
fclose($myfile);
echo "<br>==============================目录文件生成成功..............<br>"; // 获取到内容,写入文件
foreach($catalogArr as $k=>$v){
$pattern='/#titlestart#'.$v.'#titleend#(.*?)#titlestart/is';
preg_match ($pattern, $content, $result); $myfile = fopen($dir."/".($k+1).".txt", "w") or die("Unable to open file!");
fwrite($myfile, $result[1]);
fclose($myfile);
echo "<br>===================文章第".($k+1)."章节写入成功..............";
} echo "<br><br><br><br><br><br><br>====================书本识别成功..........................."; ?>
2.获取章节列表,实现获取章节内容接口
<?php
header('Content-Type:application/json'); $action = $_GET["act"];
$fileName = $_GET["artname"]; if(!$action){
$rsp = array("code" => 500, "msg" => "请求不存在");
$rsp = json_encode($rsp);
echo $rsp;
exit();
}else if(!$fileName){
$rsp = array("code" => 500, "msg" => "书本不存在");
$rsp = json_encode($rsp);
echo $rsp;
exit();
} if($action == "getcat"){
// 获取目录
$fileName = "../books/".$fileName."/catalog.txt"; // 读取文件
if(file_exists($fileName)){
$myfile = fopen($fileName, "r") or die("Unable to open file!");
$content = fread($myfile,filesize($fileName));
fclose($myfile); $code = 200;
$msg = "读取目录成功";
$catalogArray = array();
if($content){
$carray = explode('#catalog#',$content); foreach($carray as $k=>$v){
if($v){
$item = array("index"=>($k+1), "cataTitle"=>$v);
array_push($catalogArray, $item);
}
}
} if(count($catalogArray)<=0){
$code = 500;
$msg = "书本不存在目录";
} $rsp = array("code" => $code, "msg" => $msg, "catalogList" => $catalogArray);
$rsp = json_encode($rsp); echo $rsp;
exit();
}else{
// 文件不存在
$rsp = array("code" => 404, "msg" => "文件不存在");
$rsp = json_encode($rsp);
echo $rsp;
exit();
}
}else if($action=="getcon"){
// 获取文章内容
$index = (int)$_GET["index"]; $fileName = "../books/".$fileName."/".$index.".txt"; if(file_exists($fileName)){
$myfile = fopen($fileName, "r") or die("Unable to open file!");
$content = fread($myfile,filesize($fileName));
fclose($myfile); $content = str_replace("\r\n","<br>", $content);
$rsp = array("code" => 200, "msg" => "读取内容成功", "con" => $content);
$rsp = json_encode($rsp); echo $rsp;
exit();
}else{
// 文件不存在
$rsp = array("code" => 404, "msg" => "文件不存在");
$rsp = json_encode($rsp);
echo $rsp;
exit();
}
}else{
echo "error request, please check your request content";
exit();
} ?>
每天学习一点点 编程PDF电子书、视频教程免费下载:
http://www.shitanlife.com/code
php实现TXT小说章节解析、小说章节在线阅读的更多相关文章
- python爬虫之小说网站--下载小说(正则表达式)
python爬虫之小说网站--下载小说(正则表达式) 思路: 1.找到要下载的小说首页,打开网页源代码进行分析(例:https://www.kanunu8.com/files/old/2011/244 ...
- 从“顶点小说”下载完整小说——python爬虫
此程序只是单纯的为了练习而做,首先这个顶点小说非收费型的那种小说网站(咳咳,我们应该支持正版,正版万岁,✌).经常在这个网站看小说,所以就光荣的选择了这个网站.此外,其实里面是自带下载功能的,而且支持 ...
- 初次尝试python爬虫,爬取小说网站的小说。
本次是小阿鹏,第一次通过python爬虫去爬一个小说网站的小说. 下面直接上菜. 1.首先我需要导入相应的包,这里我采用了第三方模块的架包,requests.requests是python实现的简单易 ...
- Python爬虫中文小说网点查找小说并且保存到txt(含中文乱码处理方法)
从某些网站看小说的时候经常出现垃圾广告,一气之下写个爬虫,把小说链接抓取下来保存到txt,用requests_html全部搞定,代码简单,容易上手. 中间遇到最大的问题就是编码问题,第一抓取下来的小说 ...
- python 爬取全本免费小说网的小说
这几天朋友说想看电子书,但是只能在网上看,不能下载到本地后看,问我有啥办法?我找了好几个小说网址看了下,你只能直接在网上看,要下载txt要冲钱买会员,而且还不能在浏览器上直接复制粘贴.之后我就想到py ...
- UWP_小说在线阅读器:功能要求与技术要求
学了WP开发也有一年了,也没做过什么软件的.17年进发UWP,锻炼自己一下.做一个开源的小说阅读器吧. 既然开发一个软件.所以要设计一下吧. 功能要求: 可能要用到的技术,这个吗,这就是遇到问题在解决 ...
- caffe中ConvolutionLayer的前向和反向传播解析及源码阅读
一.前向传播 在caffe中,卷积层做卷积的过程被转化成了由卷积核的参数组成的权重矩阵weights(简记为W)和feature map中的元素组成的输入矩阵(简记为Cin)的矩阵乘积W * Cin. ...
- Spark之SQL解析(源码阅读十)
如何能更好的运用与监控sparkSQL?或许我们改更深层次的了解它深层次的原理是什么.之前总结的已经写了传统数据库与Spark的sql解析之间的差别.那么我们下来直切主题~ 如今的Spark已经支持多 ...
- springboot之启动原理解析及源码阅读
前言 SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏.所以这次博主就跟你们一起一步步揭开SpringBoot的神秘面 ...
随机推荐
- Java基础IO流(五)RandomAccessFile
RandomAccessFile java提供的对文件内容的访问,既可以读文件也可以写文件.RandomAccessFile支持随机访问文件,可以访问文件的任意位置 (1)java文件模型: 在 ...
- 腾讯云下的CentOS7 安装最新版Python3.7.0
第一步下载Python3.7.0 刚开始我是在windows上下载之后 传到FTP服务器上的 后来发现使用以下命令可以更快捷地下载到服务器 * wget https://www.python.org ...
- PHP微信H5支付
今天项目用到了微信新出的h5支付直接去官网 https://pay.weixin.qq.com/wiki/doc/api/index.html找dome去了找了之后才发现没有一脸懵逼,一开始以为和公众 ...
- ASPxGridView 用法
一.ASPxGridView属性:概述设置(Settings) 1.1.Settings <Settings GridLines="Vertical" : 网格样式 Vert ...
- 07-HTML-内嵌标签
<html> <head> <title>内嵌标签学习</title> <meta charset="utf-8"/> ...
- JavaScript易错知识点整理[转]
前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...
- 获取请求的ip工具类
package com.example.util; import javax.servlet.http.HttpServletRequest; /** * get remote msg * 获取访问的 ...
- spring boot 集成 redis lettuce
一.简介 spring boot框架中已经集成了redis,在1.x.x的版本时默认使用的jedis客户端,现在是2.x.x版本默认使用的lettuce客户端,两种客户端的区别如下 # Jedis和L ...
- Python入门基础之函数、切片
Python之函数 Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用. Python之调用函数 Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需 ...
- Spring学习之旅(二)极速创建Spring框架java Web工程项目
编译工具:eclipse 1)创建Web工程:spring_web_helloworld 2)导入所需jar包: 3)创建实体类:同上篇博文 4)创建配置文件hellobean.xml.同上篇博文 不 ...