用php读取CSV中的随机换行


Random row breaks in CSV read with php

我正在尝试读取和显示CSV文件的内容。出于某种原因,我试图阅读的这个文件出现了错误。

这是我的密码。

<?php
if (($handle = fopen("http://testdummies.dk/csv/weird2.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
    echo "<pre>";
            print_r ($data);
            echo "</pre>";
}
fclose($handle);
}
?>

我使用一个丹麦CSV文件,所以它使用;而不是

我在http://testdummies.dk/csv/testdups2.php

它生成的前3个数组是正确的,但第4个数组出现在"单元格"47。我就是不明白为什么。(该文件在excel中打开良好)。

文件位于http://testdummies.dk/csv/weird2.csv

提前谢谢。

René

这篇博客文章说PHP fgetcsv()不能正确处理带引号的换行符。他提供了自己的CsvFileParser类来解决这个问题。

感谢@Barmar的回答。。。从那篇博客文章中,我发现了一个基于CsvFileParser类构建的稍新的库,其中包含一些额外的函数。

分析CSV

例如,ParseCSV库的构建允许自动忽略文件中的头行。此外,所得到的数组输出的结构似乎更清晰一些。