【发布时间】:2015-04-23 15:51:55
【问题描述】:
我对 fgtcsv() 有一个非常奇怪的问题。看这段代码
$csv_check = fopen(CSV_DIR.$this->db_table.".csv","r");
$data = fgetcsv($csv_check, 1000, $this->fields_terminated_by);
fclose($csv_check);
print_r($data) 输出以下内容:
array (
0 => '"program_id"',
1 => 'program_name',
2 => 'program_logo',
)
奇怪的是,$data[0] 在这里被双引号引起来……这个 CSV 文件中的原始行如下所示:
"program_id";"program_name";"program_logo"
我完全不明白...用 strlen($data[0]) 计算 $data[0] 的字符返回 15,即使引用错误,它也必须是 12 个字符...我'我很震惊...!
有什么想法吗?!?
【问题讨论】:
-
csv 文件是否有 BOM 标头?如果是这样,那么它很可能被视为数据的一部分,这意味着引号也是数据的一部分,因为第一个引号出现在 BOM 标题之后,因此不被视为附件引号
-
就是这样,@MarkBaker。谢谢!
-
刚遇到这个问题。什么是 BOM 表头?你是怎么解决这个问题的?
-
@DustinGraham &others... -> What's different between UTF-8 and UTF-8 without BOM?
标签: php double-quotes fgetcsv