php - 如何使用 fgetcsv 删除空白行

标签 php fgetcsv

我一直致力于将 csv 文件导入 mysql 数据库。问题是我的客户得到的文件已经有一些错误的格式。行以 43 结束,但文件下降到 65078!

导入时,脚本会一直运行。我该怎么做才能确保只导入从 0 到 44 的行?这是我正在使用的代码。

  <table>
<?php
//fgetcsv($handle, 1024, delimiter)
$file = fopen("prices.csv", "r");
$row = 0;

    while($csv_line = fgetcsv($file,1024)) {

      if($row ==    4){
        echo "How many headers do we have: ".count($csv_line)."<tr>";

         foreach($csv_line as $header){

           if($header !== NULL){
            print "<td>$header</td>";
           }
         }
         echo "</tr>";
      } 

      if($row > 6) {

        echo '<tr>';

        for ($i = 0, $j = count($csv_line); $i < $j; $i++) {

          echo '<td>'.$csv_line[$i].'</td>';

        }

        echo "</tr>\n";

      } else {

        $row++;

      }

    } 
?>

</table>

最佳答案

如果填充的行数不固定,您可以使用类似的方法:

if (empty($line)) { break; }

你的评论给了我一个更好的解决方案的想法:

在这里http://php.net/manual/en/function.fgetcsv.php出现这个“CSV 文件中的空白行将作为包含单个空字段的数组返回”,所以这可能有帮助:

while(($csv_line = fgetcsv($file,1024)) && $csv_line[0]) {

将只读直到找到一个空行。

关于php - 如何使用 fgetcsv 删除空白行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7080251/

相关文章:

php - Delete from inner join mysql查询-两表多条件

php - 如何在使用sql创建另一个sql后立即获取主键

php - 获取制表符分隔文件并根据与唯一字段的匹配行更新 MySQL 字段

php - 在 PHP 中处理 csv 文件时如何指定编码?

php - fgetcsv() 不适用于 $_POST 中的变量 $delimiter

php - 执行 PDO 查询将绑定(bind)参数从整数更改为字符串

php - 使用 Xpath 解析网站中的 html

php - MySQL GROUP BY 计数

php - 如何在php中连接csv文件中的两列?

php - 我的 php 代码只将我的 csv 文件的第一行导入到数据库