我正在使用PHP使用fgetcsv()从CSV文件导入数据,这会为每一行生成一个数组。最初,我将字符数限制设置为1024,如下所示:

while ($data = fgetcsv($fp, 1024)) {
  // do stuff with the row
}

但是,包含200列以上的CSV在许多行上都超过了1024个限制。这导致该行的读取停止在一行的中间,然后对fgetcsv()的下一次调用将从上一个中断的地方开始,依此类推,直到达到EOL。

从那以后,我将这个限制提高到4096,这应该可以处理大多数情况,但是我想检查一下以确保在提取每行之后都读取了整行。我该怎么办?

我正在考虑检查数组的最后一个元素的末尾是否包含行字符(\n,\r,\r\n),但是fgetcsv()调用是否可以解析这些字符?

最佳答案

只是省略长度参数。在PHP5中是可选的。

while ($data = fgetcsv($fp)) {
  // do stuff with the row
}

09-27 01:06