PHP fgetcsv():分隔符必须是单个字符
我有下面的代码,我用来读取以CRLF作为行结尾的csv文件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; }
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
作为分隔符,因为如果使用逗号作为分隔符并简单地遍历每一行,它会自动处理。