zoukankan      html  css  js  c++  java
  • php实现TXT小说章节解析、小说章节在线阅读

    每天学习一点点 编程PDF电子书、视频教程免费下载:
    http://www.shitanlife.com/code

    要实现TXT文本章节的解析,大概思路是在每个章节加入了特定的字符,然后根据字符的起始位置读取章节。这里我写了一个小说阅读项目,也是根据这个思路进行。

    实现步骤:

        1. 解析TXT文件,生成章节内容

                       1. 编辑TXT文件,在每个章节名称加入我自己定义的一个字符串,用以识别。

                       2.识别章节,获取到章节列表

                       3.根据自定义的字符串,循环读取每个章节的内容,并生成每个章节的TXT文件

                2.获取章节列表,实现获取章节内容接口

                       1. 章节列表接口

                       2. 章节内容接口

    源码:

    1.解析TXT文件,生成章节内容

     1 <?php
     2 header("content-type:text/html;charset=utf-8");
     3 
     4 $artName = $_GET["artname"];
     5 
     6 if(!$artName){
     7     echo "文件名没有哦";exit();
     8 }
     9 
    10 $fromFileName = "../".$artName.".txt";
    11 if(!file_exists($fromFileName)){
    12     echo "源文件不存在啊";exit();
    13 }
    14 
    15 $distDirName = $artName;
    16 
    17 $myfile = fopen($fromFileName, "r") or die("Unable to open file!");
    18 $content = fread($myfile,filesize($fromFileName));
    19 fclose($myfile);
    20 echo "<br>读取原始文件成功..............";
    21 
    22 $pattern='/#titlestart#(.*?)#titleend#/is';
    23 preg_match_all ($pattern, $content, $result, PREG_PATTERN_ORDER);
    24 
    25 echo "<br><br>文章目录识别成功..............<br><br>";
    26 
    27 // 获取到目录
    28 // 目录数组 $result[1]
    29 $catalogStr = "";
    30 $catalogArr = array();
    31 foreach($result[1] as $v){
    32     array_push($catalogArr,$v);
    33     $catalogStr .= $v."#catalog#";
    34 }
    35 
    36 // 创建书本目录
    37 $dir = iconv("UTF-8", "GBK", "./books/".$distDirName);
    38 if (!file_exists($dir)){
    39     mkdir ($dir,0777,true);
    40     echo '<br>创建文件夹bookdir成功<br><br>';
    41 } else {
    42     echo '<br>需创建的文件夹bookdir已经存在<br><br>';
    43 }
    44 
    45 // 生成目录文件
    46 $myfile = fopen($dir."/catalog.txt", "w") or die("Unable to open file!");
    47 fwrite($myfile, $catalogStr);
    48 fclose($myfile);
    49 echo "<br>==============================目录文件生成成功..............<br>";
    50 
    51 // 获取到内容,写入文件
    52 foreach($catalogArr as $k=>$v){
    53     $pattern='/#titlestart#'.$v.'#titleend#(.*?)#titlestart/is';
    54     preg_match ($pattern, $content, $result);
    55     
    56     $myfile = fopen($dir."/".($k+1).".txt", "w") or die("Unable to open file!");
    57     fwrite($myfile, $result[1]);
    58     fclose($myfile);
    59     echo "<br>===================文章第".($k+1)."章节写入成功..............";
    60 }
    61 
    62 
    63 echo "<br><br><br><br><br><br><br>====================书本识别成功...........................";
    64 
    65 
    66 
    67 ?>

          2.获取章节列表,实现获取章节内容接口

     1 <?php
     2 header('Content-Type:application/json');
     3 
     4 $action = $_GET["act"];
     5 $fileName = $_GET["artname"];
     6 
     7 if(!$action){
     8     $rsp = array("code" => 500, "msg" => "请求不存在");
     9     $rsp = json_encode($rsp);
    10     echo $rsp;
    11     exit();
    12 }else if(!$fileName){
    13     $rsp = array("code" => 500, "msg" => "书本不存在");
    14     $rsp = json_encode($rsp);
    15     echo $rsp;
    16     exit();
    17 }
    18 
    19 if($action == "getcat"){
    20     // 获取目录
    21     $fileName = "../books/".$fileName."/catalog.txt";
    22 
    23     // 读取文件
    24     if(file_exists($fileName)){
    25         $myfile = fopen($fileName, "r") or die("Unable to open file!");
    26         $content = fread($myfile,filesize($fileName));
    27         fclose($myfile);
    28 
    29         $code = 200;
    30         $msg = "读取目录成功";
    31         $catalogArray = array();
    32         if($content){
    33             $carray = explode('#catalog#',$content); 
    34             
    35             foreach($carray as $k=>$v){
    36                 if($v){
    37                     $item = array("index"=>($k+1), "cataTitle"=>$v);
    38                     array_push($catalogArray, $item);
    39                 }
    40             }
    41         }
    42         
    43         if(count($catalogArray)<=0){
    44             $code = 500;
    45             $msg = "书本不存在目录";
    46         }
    47         
    48         $rsp = array("code" => $code, "msg" => $msg, "catalogList" => $catalogArray);
    49         $rsp = json_encode($rsp);
    50         
    51         echo $rsp;
    52         exit();
    53     }else{
    54         // 文件不存在
    55         $rsp = array("code" => 404, "msg" => "文件不存在");
    56         $rsp = json_encode($rsp);
    57         echo $rsp;
    58         exit();
    59     }
    60 }else if($action=="getcon"){
    61     // 获取文章内容
    62     $index = (int)$_GET["index"];
    63     
    64     $fileName = "../books/".$fileName."/".$index.".txt";
    65     
    66     if(file_exists($fileName)){
    67         $myfile = fopen($fileName, "r") or die("Unable to open file!");
    68         $content = fread($myfile,filesize($fileName));
    69         fclose($myfile);
    70         
    71         $content = str_replace("
    ","<br>", $content);
    72         $rsp = array("code" => 200, "msg" => "读取内容成功", "con" => $content);
    73         $rsp = json_encode($rsp);
    74         
    75         echo $rsp;
    76         exit();
    77     }else{
    78         // 文件不存在
    79         $rsp = array("code" => 404, "msg" => "文件不存在");
    80         $rsp = json_encode($rsp);
    81         echo $rsp;
    82         exit();
    83     }
    84 }else{
    85     echo "error request, please check your request content";
    86     exit();
    87 }
    88 
    89 
    90 ?>

    每天学习一点点 编程PDF电子书、视频教程免费下载:
    http://www.shitanlife.com/code

  • 相关阅读:
    Andrew Ng机器学习week4(Neural Networks: Representation)编程习题
    linux系统下crontab 配置启动定时任务
    在python中配置tornado服务
    在python中Flask配置服务
    ltp的使用
    查看文件内容- 删除某个运行程序的所有进程-nohup后台执行程序
    机器学习和深度学习资料整理
    配置linux服务器和pycharm的连接
    计算 24 点是一种扑克牌益智游戏,随机抽出 4 张扑克牌,通过加 (+) ,减 (-) ,乘 ( * ), 除 (/) 四种运算法则计算得到整数 24 ,本问题中,扑克牌通过如下字符或者字符串表示,其中,小写 joker 表示小王,大写 JOKER 表示大王:
    机器人的运动范围 剑指offer66题
  • 原文地址:https://www.cnblogs.com/scode2/p/9001537.html
Copyright © 2011-2022 走看看