我有一个CSV解析器,它通过将文件分块成几块来处理任何大小的文件,然后使用fgets()读取每一行以获取每一行数据,并使用str_getcsv()将每一行作为数组返回。它已经能够处理超过200,000行的文件而没有问题。
但是,我现在正在处理一些包含机箱内换行符的文件。问题是fgets()读取一行但在看到换行符时停止。所以我的系统失败了。然后它继续读取具有换行符的字段行,并继续处理这些字段,就好像它们是CSV中的新行一样。哎哟。
所以,我不确定最好的方法。我将需要继续将我的文件分块以处理大规模的大小但是我无法切换到另一个解析库,它更优雅地处理换行符,例如https://github.com/parsecsv/parsecsv-for-php,因为这种类型的解析器试图解析整个CSV文件一次,这不适合我正在处理的文件的大小。
我正在寻找有关具体策略的建议。
答案 0 :(得分:1)
我需要保持fgets()的使用,所以我做了以下事情来解决这个问题:
适合我。希望这有助于其他人。