在问这个问题之前,我已经阅读了文档并广泛搜索了这个网站。
$file = new SplFileObject("/var/www/qacentre/compliance/compliance.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
}
示例 CSV 行;
"ABEL, TAMMY 454454","End of: ABEL, TAMMY 454454",QP544454,28/10/2012 11:41,"0811 非法使用、拥有","STEPHENS, JEREMY 54544454",LINK操作,定位细节不正确,实体:FORD FALCON 注册号:颜色:白色
我已经回应了输出,它似乎无法识别附件字符 (")。我尝试使用 SetCSVControl
尽管我使用的是默认附件。我也尝试过转义SetCSVControl
中的封闭字符(因为我无法控制我正在导出的 CSV 文件)。
例如,当我打印第一列的结果时,应该是 ( ABEL, TAMMY 454454 ) 我收到了 ( "ABEL )。
我读到这可能是我的区域设置 (en-GB,en-US;q=0.8,en;q=0.6) 的问题?
任何帮助都会很棒。
最佳答案
你可以使用 SplFileObject::fgetcsv
public array SplFileObject::fgetcsv ([ string $delimiter = "," [, string $enclosure = "\"" [, string $escape = "\\" ]]] )
例子中是这样写的;
<?php
$file = new SplFileObject("data.csv");
while (!$file->eof()) {
var_dump($file->fgetcsv());
}
?>
或
<?php
$file = new SplFileObject("animals.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
list($animal, $class, $legs) = $row;
printf("A %s is a %s with %d legs\n", $animal, $class, $legs);
}
?>
注意:
%s means strings, %d is an integer
在你的具体情况下
$file = new SplFileObject("/var/www/qacentre/compliance/compliance.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
var_dump($row);
}
或者你可以
<?php
$file = new SplFileObject("/var/www/qacentre/compliance/compliance.csv");
while (!$file->eof()) {
var_dump($file->fgetcsv());
}
?>
关于php - SplFileObject::READ_CSV 似乎没有正确读取 CSV 文件 - 忽略附件“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15015480/