Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Roman-Lesefunktion in PHP

So implementieren Sie die Roman-Lesefunktion in PHP

藏色散人
藏色散人Original
2021-09-13 09:05:062563Durchsuche

So implementieren Sie die Roman-Lesefunktion in PHP: 1. Analysieren Sie die TXT-Datei und generieren Sie den Kapitelinhalt. 2. Rufen Sie die Kapitelliste ab und implementieren Sie die Schnittstelle, um den Kapitelinhalt abzurufen.

So implementieren Sie die Roman-Lesefunktion in PHP

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Wie implementiert man die Roman-Lesefunktion in PHP?

php realisiert die Analyse von TXT-Romankapiteln und das Online-Lesen von Romankapiteln.

Um die Analyse von TXT-Textkapiteln zu realisieren, besteht die allgemeine Idee darin, jedem Kapitel bestimmte Zeichen hinzuzufügen und die Kapitel dann entsprechend der Startposition zu lesen die Charaktere. Hier habe ich ein Roman-Leseprojekt geschrieben, das ebenfalls auf dieser Idee basiert.

Implementierungsschritte:

1. Analysieren Sie die TXT-Datei und generieren Sie Kapitelinhalte

                  1. Bearbeiten Sie die TXT-Datei und fügen Sie zur Identifizierung eine Zeichenfolge meiner eigenen Definition zu jedem Kapitelnamen hinzu.章 2. Erkennen Sie das Kapitel, rufen Sie die Kapitelliste ab

3. Lesen Sie gemäß der benutzerdefinierten Zeichenfolge den Inhalt jedes Kapitels in einer Schleife und generieren Sie die TXT-Datei jedes Kapitels

2. Rufen Sie die Kapitelliste ab, um das zu erreichen Schnittstelle zum Abrufen von Kapitelinhalten

1. Schnittstelle für Kapitellisten

2. Schnittstelle für Kapitelinhalte

Quellcode:

1. TXT-Datei analysieren und Kapitelinhalt generieren

<?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=&#39;/#titlestart#(.*?)#titleend#/is&#39;;
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 &#39;<br>创建文件夹bookdir成功<br><br>&#39;;
} else {
    echo &#39;<br>需创建的文件夹bookdir已经存在<br><br>&#39;;
}

// 生成目录文件
$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=&#39;/#titlestart#&#39;.$v.&#39;#titleend#(.*?)#titlestart/is&#39;;
    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. Kapitelliste abrufen, implementiert die Schnittstelle zum Abrufen Kapitelinhalt

<?php
header(&#39;Content-Type:application/json&#39;);

$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(&#39;#catalog#&#39;,$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();
}


?>

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Roman-Lesefunktion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn