Php 用户fgetcsv,条目前后有无引号

Php 用户fgetcsv,条目前后有无引号,php,Php,编辑:是否有fgetcsv的替代方案 下面的代码处理csv文件,其中每个条目以引号大小写,并以逗号分隔,例如:“Name”,“Last”。。。我遇到的问题是,有时csv文件的每个条目周围都没有引号,只是用逗号分隔ex:Name,Last。我如何处理这两种类型 $uploadcsv = "/temp/files/Load15.csv"; $handle = fopen($uploadcsv, 'r'); $column_headers = array(); $row_c

编辑:是否有fgetcsv的替代方案

下面的代码处理csv文件,其中每个条目以引号大小写,并以逗号分隔,例如:“Name”,“Last”。。。我遇到的问题是,有时csv文件的每个条目周围都没有引号,只是用逗号分隔
ex:Name,Last
。我如何处理这两种类型

$uploadcsv = "/temp/files/Load15.csv";
       $handle = fopen($uploadcsv, 'r');
       $column_headers = array();
$row_count = 0;
while (($data = fgetcsv($handle, 100000, ",")) !== FALSE) {
  if ($row_count==0){
    $column_headers = $data;
  } else {
    print_r($data);
  }
  ++$row_count;
}
此csv有效:

"Name","Last"
"Mike","Aidens"
"Mike1","Aidens1"
Name,Last
Mike,Aidens
Mike1,Aidens1
此csv不起作用:

"Name","Last"
"Mike","Aidens"
"Mike1","Aidens1"
Name,Last
Mike,Aidens
Mike1,Aidens1

编辑:奇怪的错误。。。我尝试了CSV文件中的一个小片段,没有引用,它成功了。奇怪的是,我尝试了一大块,然后是整个CSV内容(这都是粘贴到一个新的test.CSV文件中的内容),结果成功了。两个文件的大小完全相同17151KB,但原始csv文件不会处理。结尾没有尾随空格或行。

据我所知,
fgetcsv
在数据周围加引号或不加引号都可以正常工作。

除非CSV文件格式不正确,否则这将“正常工作”


换句话说,你不必担心是否每个字段都有引号,我会帮你处理好的

将第四个参数设置为空字符串,它将设置机柜,这是默认的


在php getcsv函数调用之前使用这行代码

ini_set('auto_detect_line_endings',TRUE);

也有同样的问题,它无法读取没有双引号的希伯来文(utf-8)字母。它在命令行上运行良好(可以读取没有双引号的希伯来文),但在Apache中,它只读取有双引号的标题,并返回空字符串,而不是在没有双引号的其余行中的希伯来文字符串

检查Apache中的区域设置并返回字母“C”,但在命令行中返回“LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_时间=C;LC_COLLATE=C;LC_MONETARY=C;LC_=C;LC_PAPER=C;LC_NAME=C;LC_地址=C;LC_电话=C;LC_测量=C;LC_标识=C“

因此,我在fgetcsv命令之前添加了以下行:

setlocale(LC_CTYPE, 'en_US.UTF-8');

它成功地读取了希伯来文字母,没有双引号。

你是说它现在不能同时处理这两个字母吗?会发生什么情况?fgetcsv为我处理了不带引号的值。@dan nothing会发生错误,不会输出任何内容。它只对“Name”起作用,对Name不起作用。我需要它对“Name”、“Last”起作用“和名称,最后提供您的CSV文件,因为fgetcsv不在fault@Dan我更新了一个示例我刚刚在示例CSV上运行了您的代码,它在我的屏幕上打印了两行。这里没有bug,你的设置还需要更多。请更正它与上面代码中的“Name”、“Last”一起工作,但我需要检测和处理Name、Last。这可能吗?你确定你的CSV文件没有格式错误(缺少或多余的逗号或问号)-fgetcsv应该正确处理此问题。请在原始帖子中查看我的编辑评论。奇怪的是,我认为这会奏效,但不是。。此行是否自动包含带引号的字段?