fgetcsv skip blank lines in file

前端 未结 3 868
小鲜肉
小鲜肉 2021-01-04 09:26

I have this script that I did, it basically grabs all the files in my \"logs\" folder and merge them all in one array file, my only problem is that, sometimes the script bre

相关标签:
3条回答
  • 2021-01-04 10:06

    In short

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

    Explanation

    1. file reads the content of the file into an array. The FILE_SKIP_EMPTY_LINES will skip the empty lines in the file.
    2. array_map will apply the function str_getcsv on each element of the array. str_getcsv will parse the string input for fields in csv format and return an array containing the fields.

    Read more about str_getcsv

    Read more about file

    Read more about array_map

    0 讨论(0)
  • 2021-01-04 10:17

    As you can read in the documentation for fgetcsv():

    A blank line in a CSV file will be returned as an array comprising a single null field, and will not be treated as an error.

    Checking for that before adding it to your data array should be sufficient:

    while (($result = fgetcsv($in)) !== false) {
        if (array(null) !== $result) { // ignore blank lines
            $csv[] = $result;
        }
    }
    
    0 讨论(0)
  • 2021-01-04 10:18

    This works 100% tested, simplest way. The explanation is that blank lines make fgetcsv return a non-empty array with just a null element inside.

    if ($result[0] == NULL)
        continue;
    
    0 讨论(0)
提交回复
热议问题