【问题标题】:SplFileObject::READ_CSV doesn't appear to be reading CSV file correctly - ignoring enclosure "SplFileObject::READ_CSV 似乎没有正确读取 CSV 文件 - 忽略附件“
【发布时间】:2013-02-22 01:40:28
【问题描述】:

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

$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 unlawfully use, possess","STEPHENS, JEREMY 54544454",LINK OPERATIONS,Located details incorrect,Entity: FORD FALCON Reg #: Colour: White

我已经回显了输出,但它似乎无法识别外壳字符 (")。尽管我使用的是默认外壳,但我尝试使用 SetCSVControl。我还尝试在 @987654324 中转义外壳字符@(因为我无法控制要导出的 CSV 文件)。

例如,当我打印第一列的结果时,应该是 (ABEL, TAMMY 454454) 我正在接收 ("ABEL)。

我已阅读这可能是我的语言环境设置的问题(en-GB,en-US;q=0.8,en;q=0.6)?

任何帮助都会很棒。

【问题讨论】:

    标签: php csv splfileobject


    【解决方案1】:

    你可以使用 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 表示字符串,%d 是整数

    根据您的具体情况

    $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());
        }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多