php 拆分txt小说章节保存到数据库


$xs_capter_list = [];
            $xs_content_list = [];
            set_time_limit(0);//0表示不限时

            $file = fopen('txt小说地址', "r");
            $i = 0;//行数
            $j = 1; //章节数
            $content = '';
            $chaptertitle ='';
            //输出文本中所有的行,直到文件结束为止。
            while(true) {
                if(feof($file)){
                    //文章结尾
                    if($content!='' && $chaptertitle!=''){
                        $content = strtr($content,["\r\n" => '
']); $content = mb_substr($content,49);//去掉前49个广告字符 $xs_content_list[] = $content; //成功后 break; } break; }else{ $now = fgets($file); $now = mb_convert_encoding($now,'UTF-8','UTF-8,GBK,GB2312,BIG5');//使用该函数对结果进行转码 //var_dump($now); if(strpos($now,'第')!==FALSE and strpos($now,'章')!==FALSE){ //判断上一层循环 if($content!='' && $chaptertitle!=''){ //执行插入操作 $content = strtr($content,["\r\n" => '
']); $content = mb_substr($content,49);//去掉前49个广告字符 $xs_content_list[] = $content; //成功后 $content = ''; $chaptertitle = strtr($now,["\r\n" => '']); //var_dump($chaptertitle); $j++; }else{ $content .= $now; $chaptertitle = strtr($now,["\r\n" => '']); } $xs_capter_list[] = $chaptertitle; //die(); }else{ $content .= $now; } } $i++; } foreach($xs_capter_list as $key=>$v){ $chapter['content'] = $xs_content_list[$key]; $chapter['total'] = mb_strlen($xs_content_list[$key]);; $chapter_id = $this->sql('xs.nh_chapter')->insertId($chapter); }

临时写的代码,比较乱,还有待于优化。

思路是一行一行的读取txt文本,利用小说 “第三章 桌下的手”  这种类似的关键字来分拆章节

最后生成两个数组 

$xs_capter_list和
$xs_content_list 来分别保存标题和内容,然后写入数据库

相关