php - SplFileObject::READ_CSV 似乎没有正确读取 CSV 文件 - 忽略附件“

标签 php csv splfileobject

在问这个问题之前,我已经阅读了文档并广泛搜索了这个网站。

$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/

相关文章:

php - MYSQL 5.6.12 中mysql插入查询出错

php - MySQL插入多行

python - 从 .csv 文件向多个 MySQL 数据库表插入数据

php - 取消链接和 SplFileObject

php - MySQL - 将日期和时间保存为 DATETIME 与将日期和时间保存为字符串

php - Codeigniter 3 中的用户名或密码无效

python - 如何在 Python 中查找并替换每行特定字符后面的文本?

用于获取文件夹的文件名和文件大小的 csv 文件的 Powershell 脚本

php - PHP 的 SplFileObject 类的 C++/VC++ 替代品