$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" => '<br>']); $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" => '<br>']); $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 來分別保存標題和內容,然后寫入數據庫