每天学习一点点 编程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小说章节解析、小说章节在线阅读的更多相关文章

  1. python爬虫之小说网站--下载小说(正则表达式)

    python爬虫之小说网站--下载小说(正则表达式) 思路: 1.找到要下载的小说首页,打开网页源代码进行分析(例:https://www.kanunu8.com/files/old/2011/244 ...

  2. 从“顶点小说”下载完整小说——python爬虫

    此程序只是单纯的为了练习而做,首先这个顶点小说非收费型的那种小说网站(咳咳,我们应该支持正版,正版万岁,✌).经常在这个网站看小说,所以就光荣的选择了这个网站.此外,其实里面是自带下载功能的,而且支持 ...

  3. 初次尝试python爬虫,爬取小说网站的小说。

    本次是小阿鹏,第一次通过python爬虫去爬一个小说网站的小说. 下面直接上菜. 1.首先我需要导入相应的包,这里我采用了第三方模块的架包,requests.requests是python实现的简单易 ...

  4. Python爬虫中文小说网点查找小说并且保存到txt(含中文乱码处理方法)

    从某些网站看小说的时候经常出现垃圾广告,一气之下写个爬虫,把小说链接抓取下来保存到txt,用requests_html全部搞定,代码简单,容易上手. 中间遇到最大的问题就是编码问题,第一抓取下来的小说 ...

  5. python 爬取全本免费小说网的小说

    这几天朋友说想看电子书,但是只能在网上看,不能下载到本地后看,问我有啥办法?我找了好几个小说网址看了下,你只能直接在网上看,要下载txt要冲钱买会员,而且还不能在浏览器上直接复制粘贴.之后我就想到py ...

  6. UWP_小说在线阅读器:功能要求与技术要求

    学了WP开发也有一年了,也没做过什么软件的.17年进发UWP,锻炼自己一下.做一个开源的小说阅读器吧. 既然开发一个软件.所以要设计一下吧. 功能要求: 可能要用到的技术,这个吗,这就是遇到问题在解决 ...

  7. caffe中ConvolutionLayer的前向和反向传播解析及源码阅读

    一.前向传播 在caffe中,卷积层做卷积的过程被转化成了由卷积核的参数组成的权重矩阵weights(简记为W)和feature map中的元素组成的输入矩阵(简记为Cin)的矩阵乘积W * Cin. ...

  8. Spark之SQL解析(源码阅读十)

    如何能更好的运用与监控sparkSQL?或许我们改更深层次的了解它深层次的原理是什么.之前总结的已经写了传统数据库与Spark的sql解析之间的差别.那么我们下来直切主题~ 如今的Spark已经支持多 ...

  9. springboot之启动原理解析及源码阅读

    前言 SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会吃亏.所以这次博主就跟你们一起一步步揭开SpringBoot的神秘面 ...

随机推荐

  1. css3巧用选择器配合伪元素

    一 . 前言 有时我们在写底部导航栏时,会有很多超链接,每个链接间用“|”分割,如下图: 可能刚入门的朋友会想到这样完成,再单独设置span的样式, 今天主要介绍怎么样用css3简单快速的完成这个效果 ...

  2. 为啥JQuery被淘汰了?

    摘要: 技术进步永不止步. 原文:jQuery的没落和技术发展的一般规律 作者:凌霄光 Fundebug经授权转载,版权归原作者所有. jQuery的成就 jQuery是一个伟大的库, 它解决了dom ...

  3. python名片管理

    python名片管理是我根据视频自己敲敲的代码,后续学习会持续更新 代码 card_main.py import card_tools # 无限循环,由用户决定什么时候退出 while True: # ...

  4. angularjs+webapi2 跨域Basic 认证授权(一)

    如今的app,利用各种前端框架结合html5的混合开发模式已然盛极一时.其中ionic+angularjs更是如日中天.这种模式利用angularjs $http 请求数据api 以达到前后端分离深得 ...

  5. unable to locate nuget.exe

    今日使用vs 从github fork 一份代码到本地之后,提示项目 unable to locate nuget.exe. 原因:代码托管时未提交 nuget.exe 或其他原因丢失 解决方法:在解 ...

  6. blfs(systemv版本与systemd版本均适用)学习笔记-从主机挂载lfs的方法

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 运行以下命令,挂载并进入lfs分区即可 su export LFS=/mnt/lfs mount -v -t ext4 /dev ...

  7. JavaScript 变量及类型

    在JavaScript中,所有的number都是以64位浮点型数据来存储的.所有的编程语言,包括js,对浮点型数据的精度都很难确定. var a = 0.1 + 0.2; console.log(a ...

  8. SAP MM 物料主数据采购视图中的字段'Var. OUn'的作用?

    SAP MM 物料主数据采购视图中的字段'Var. OUn'的作用? 物料主数据采购视图里有一个字段,叫做'Var. OUn'的, 如下图: 这个字段,笔者之前所参与的项目里,从来没有用过.所以,笔者 ...

  9. C# 利用ZXing.Net来生成条形码和二维码

    本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...

  10. Android为TV端助力 最简单的自定义圆点view

    首先创建一个选择器,用来判断圆点状态,可以根本自己的需求改 <selector xmlns:android="http://schemas.android.com/apk/res/an ...