Jelajahi Sumber

:bug: 导入忽略第一行

visuddhinanda 4 tahun lalu
induk
melakukan
4a71a2e5e6
1 mengubah file dengan 61 tambahan dan 41 penghapusan
  1. 61 41
      app/fts/sql.php

+ 61 - 41
app/fts/sql.php

@@ -92,52 +92,72 @@ foreach($scan as $foldername) {
       $paragraph = 0;
       // 初始化当前段落的黑体字数组
       $bold_text = [];
+      
       if (($handle = fopen($csv_file, "r")) !== FALSE) {
+        $row=0;
         while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
-          $current_word = $data[5];
-          $style = $data[15];
-          if ($style == 'paranum') {
-            // 如果是段落编号,则保留数字
-            $current_word = $data[4];
-          } else if (!is_pali_word($current_word)) {
-            /*
-             * 如果当前单词不是巴利语单词,则忽略,当作它不存在
-             * TODO 这样的处理方式,可能不合适,如下面场景:
-             *          bld1 - bld2
-             * bld1 和 bld2 是否应该分开对待呢?
-             */
-            continue;
-          }
-
-          if ($paragraph == $data[3]) {
-            // 如果是同一段落,那么合并段落中的内容,中间加入空格
-            $content .= ' ' . $current_word;
-
-            // wid 取最后一个不为空的值 TODO (不一定合适)
-            $wid =  empty($data[1]) ? $wid : $data[1];
-
-            array_push($bold_text, $style == 'bld' ? $current_word : '');
-          } else {
-            // 如果是不同段落
-            if ($paragraph !== 0) {
-              // 如果刚才已经记录有数据,则转换为 SQL
-              $bold_result = count_bld($bold_text);
-              $bold_single = $bold_result['bold_single'];
-              $bold_double = $bold_result['bold_double'];
-              $bold_multiple = $bold_result['bold_multiple'];
-              $sql_from_csv .=
-                "INSERT INTO fts VALUES ($paragraph, '$book', '$wid', '$bold_single', '$bold_double', '$bold_multiple', '$content');" . PHP_EOL;
-              // 转换后,重置黑体字数据
-              $bold_text = [];
+          #忽略第一行
+          if($row > 0){
+            $current_word = $data[5];
+            $style = $data[15];
+            if ($style == 'paranum') {
+              // 如果是段落编号,则保留数字
+              $current_word = $data[4];
+            } else if (!is_pali_word($current_word)) {
+              /*
+              * 如果当前单词不是巴利语单词,则忽略,当作它不存在
+              * TODO 这样的处理方式,可能不合适,如下面场景:
+              *          bld1 - bld2
+              * bld1 和 bld2 是否应该分开对待呢?
+              */
+              continue;
             }
-            // 如果是不同段落,则赋新的值
-            $content = $current_word;
-            $paragraph =  $data[3];
-            $book = $data[2];
-            $wid =  $data[1];
 
-            array_push($bold_text, $style == 'bld' ? $current_word : '');
+            if ($paragraph == $data[3]) {
+              // 如果是同一段落,那么合并段落中的内容,中间加入空格
+              $content .= ' ' . $current_word;
+
+              // wid 取最后一个不为空的值 TODO (不一定合适)
+              $wid =  empty($data[1]) ? $wid : $data[1];
+
+              array_push($bold_text, $style == 'bld' ? $current_word : '');
+            } else {
+              // 如果是不同段落
+              if ($paragraph !== 0) {
+                // 如果刚才已经记录有数据,则转换为 SQL
+                $bold_result = count_bld($bold_text);
+                if(isset($bold_result['bold_single'])){
+                  $bold_single = $bold_result['bold_single'];
+                }else{
+                  $bold_single = "";
+                }
+                if(isset($bold_result['bold_double'])){
+                  $bold_double = $bold_result['bold_double'];
+                }else{
+                  $bold_double = "";
+                }
+                if(isset($bold_result['bold_multiple'])){
+                  $bold_multiple = $bold_result['bold_multiple'];
+                }else{
+                  $bold_multiple = "";
+                }
+                
+                $sql_from_csv .=
+                  "INSERT INTO fts VALUES ($paragraph, '$book', '$wid', '$bold_single', '$bold_double', '$bold_multiple', '$content');" . PHP_EOL;
+                // 转换后,重置黑体字数据
+                $bold_text = [];
+              }
+              // 如果是不同段落,则赋新的值
+              $content = $current_word;
+              $paragraph =  $data[3];
+              $book = (int)mb_substr($data[2],1);
+              $wid =  $data[1];
+
+              array_push($bold_text, $style == 'bld' ? $current_word : '');
+            }
           }
+          $row++;
+
         }
         fclose($handle);
       }