PHP fgetcsv():分隔符必须是单个字符

PHP fgetcsv():分隔符必须是单个字符,php,csv,Php,Csv,我有下面的代码,我用来读取以CRLF作为行结尾的csv文件 if (($fp = fopen($path, "r")) !== FALSE) { while (($record = fgetcsv($fp, 1000, "\r\n")) !== FALSE) { if ($row == 0) { $record[0] = $batchHeader; }

我有下面的代码,我用来读取以CRLF作为行结尾的csv文件

if (($fp = fopen($path, "r")) !== FALSE) {
            while (($record = fgetcsv($fp, 1000, "\r\n")) !== FALSE) {
                if ($row == 0) {
                    $record[0] = $batchHeader;
                }
                $newCsvData[] = $record;
                $row++;
            }
        }
上载csv文件时,出现以下错误:fgetcsv():分隔符必须是单个字符

以下是示例或我的csv:


谢谢。

我猜它的分隔符应该是
“\r\n”
。您是否尝试过fgetcsv($fp,1000,“|”)

它应该自动检测行尾


所讨论的参数是分隔符(字段分隔符),而不是行分隔符。在您的情况下,
|
应该是您的分隔符。该函数将自行处理行尾


请阅读

“\r\n”
…此处有两个字符…请尝试使用。(我还没有测试这是否适用于fgetcsv)如前所述,您只能使用1个字符,并且您正在尝试同时使用回车符和换行符。只需在
\n
之前应用
\r
,并使用
\n
作为分隔符。@RToyota就.csv而言,PHP EOL不会创建新行,因此通常不会将其用作分隔符<代码>\n在.csv(或任何文本文件)中创建一个新行,使.csv文件具有更好的可读性。因此,使用PHP_EOL不会有多大好处(它也将是可见的,并且不会创建新行)。虽然OP有点缺少.csv文件的要点,并且使用了
\n
作为分隔符,因为如果使用逗号作为分隔符并简单地遍历每一行,它会自动处理。