fgetcsv跳过文件中的空白行

时间:2013-08-19 22:51:09

标签: php fgetcsv

我有这个脚本,它基本上抓住了我的“logs”文件夹中的所有文件,并将它们全部合并到一个数组文件中,我唯一的问题是,如果有空行或空行,有时脚本会中断!如何告诉它自动跳过空白行并转到下一行?空白行不一定在顶部或底部!可以在csv文件的中间

<?php
    $csv = array();
    $files = glob('../logs/*.*');
    $out = fopen("newfile.txt", "w");

    foreach($files as $file){
        $in = fopen($file, "r");

    while (($result = fgetcsv($in)) !== false)

        {   
            $csv[] = $result;
        }

        fclose($in);
        fclose($out);
    }

    print json_encode(array('aaData' => $csv ));
?>

3 个答案:

答案 0 :(得分:17)

您可以阅读documentation for fgetcsv()

  

CSV文件中的空白行将作为包含单个空字段的数组返回,不会被视为错误。

在将数据添加到数据数组之前检查它应该就足够了:

while (($result = fgetcsv($in)) !== false) {
    if (array(null) !== $result) { // ignore blank lines
        $csv[] = $result;
    }
}

答案 1 :(得分:3)

这是100%经过测试,最简单的方法。解释是空行使fgetcsv返回一个非空数组,里面只有一个null元素。

for( var arr in dogs){
    if(arr.length == 0){
        //code goes here
     }
 }

答案 2 :(得分:1)

简而言之

$csv = array_map('str_getcsv', file($file_path, FILE_SKIP_EMPTY_LINES));
  

说明

     
      
  1. file将文件内容读入数组。 FILE_SKIP_EMPTY_LINES将跳过文件中的空行。
  2.   
  3. array_map将在数组的每个元素上应用函数str_getcsvstr_getcsv将解析字符串输入中的字段   csv格式并返回包含字段的数组。
  4.   

详细了解str_getcsv

详细了解file

详细了解array_map