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的神秘面 ...
 
随机推荐
- Codeforces Round #308 (Div. 2)
			
A. Vanya and Table Vanya has a table consisting of 100 rows, each row contains 100 cells. The rows ...
 - Java中对象和json互相转换的工具类
			
package com.Dingyu.util; import java.util.List; import com.fasterxml.jackson.core.JsonProcessingExce ...
 - CSS-水平和垂直居中
			
div中水平和垂直居中 width:200px;height:200px; /*设置div的大小*/ border:1px solid green; /*边框*/ text-align: center ...
 - nodemailer + express + h5 拖拽文件上传 实现发送邮件
			
一.部署 1.部署Express 2.准备一个邮箱并开始SMTP服务 二.服务器端 三.客户端 四.效果:
 - CSS3布局之box-flex的使用
			
语法: box-flex:<number> 其中number取值:使用浮点数指定对象所分配其父元素剩余空间的比例.设置或检索伸缩盒对象的子元素如何分配其剩余空间.(伸缩盒最老版本) htm ...
 - Nginx 限制并发连接和并发请求数配置
			
Nginx限制并发连接和并发请求数配置 by:授客 QQ:1033553122 测试环境 nginx-1.10.0 配置介绍 查看是否内置模块 # pwd /mnt/nginx-1.10.0 ...
 - Android为TV端助力 自定义通知栏
			
package com.example.mvp; import cn.ljuns.temperature.view.TemperatureView;import presenter.ILoginPre ...
 - Django 2.0 URL新版配置介绍
			
实例 先看一个例子: from django.urls import path from . import views urlpatterns = [ path('articles/2003/', v ...
 - 微服务扩展新途径:Messaging
			
[编者按]服务编排是微服务设置的一个重要方面.本文在利用 ActiveMQ 虚拟话题来实现这一目标的同时,还会提供实用性指导.文章系国内 ITOM 管理平台 OneAPM 编译呈现. 目前,微服务使用 ...
 - MySQL中lock tables和unlock tables浅析
			
MySQL中lock tables和unlock tables浅析 在MySQL中提供了锁定表(lock tables)和解锁表(unlock tables)的语法功能,ORACLE与SQL Se ...