使用PHP解析大量CSV,但处理附件中的换行符

使用PHP解析大量CSV,但处理附件中的换行符,php,parsing,csv,Php,Parsing,Csv,我有一个CSV解析器,它处理任意大小的文件,方法是将文件分块,然后使用fgets()读取每行数据,并使用str_getcsv()将每行作为数组返回。它能够毫无问题地处理超过200000行的文件 但是,我现在处理的是一些在附件中包含换行符的文件。问题是fgets()读取一行,但在看到换行时停止。所以我的系统失败了。然后,它继续读取具有换行符的字段的行,并继续处理这些字段,就像它们是CSV中的新行一样。哎哟 所以,我不确定最好的方法是什么。我需要继续对文件进行分块处理,以处理较大的文件大小,但是我无

我有一个CSV解析器,它处理任意大小的文件,方法是将文件分块,然后使用fgets()读取每行数据,并使用str_getcsv()将每行作为数组返回。它能够毫无问题地处理超过200000行的文件

但是,我现在处理的是一些在附件中包含换行符的文件。问题是fgets()读取一行,但在看到换行时停止。所以我的系统失败了。然后,它继续读取具有换行符的字段的行,并继续处理这些字段,就像它们是CSV中的新行一样。哎哟

所以,我不确定最好的方法是什么。我需要继续对文件进行分块处理,以处理较大的文件大小,但是我无法切换到另一个处理换行符的解析库,例如,因为这种类型的解析器试图一次解析整个CSV文件,这不适合我处理的文件大小

我正在寻找关于具体战略的建议

我需要继续使用fgets(),所以我做了以下工作来解决这个问题:

  • 检测当前线路的最后一个字段上是否有未关闭的机柜
  • 如果是,请继续并将下一行附加到当前行上,直到检测到机柜
  • 将“集合”行处理为一行
  • 重复

对我来说很好。希望这对其他人有帮助。

感觉很笨拙,但到目前为止我还没有找到更好的。