【问题标题】:How do I remove quotes from fgetscv() results?如何从 fgetscv() 结果中删除引号?
【发布时间】:2019-05-13 19:48:08
【问题描述】:

我正在尝试处理来自 PHP 的 CSV 文件,为此我正在使用 fgetscv()。当我在我的 CSV 文件中找到具有以下结构的记录时,就会出现问题:

下一行是:

姓名;姓氏;年龄;“城市;性别

private function processFile($file, $name)
{

    $csv = array();

    while ($filas = fgetcsv($archivo, 0, ";", "\"", "\"")) {
        array_push($csv, $filas);
    }

    var_dump($csv);


}

当做var_dump() 我得到以下结果:

0 => "name", 1 => "lastname", 3 => "age", 4 => "city;gender"

我已经尝试发送“'”作为fgetscv() 中的附件和分隔符的参数,但结果是一样的。有什么建议么?处理的文件有超过一千条记录我想删除那个引用

【问题讨论】:

  • 您能否分享您实际使用fgetcsv() 的代码以及参数?我猜分隔符参数应该是,,而附件参数应该是"。 CSV 标题和第一行或两行的示例也可能会有所帮助。
  • 好的,谢谢!我加了
  • 您还应该添加导致您出现问题的 CSV 行,以及它之前和之后的几行。
  • CSV 的第一行是什么样的?是Name, Surname, Age, "Sex, City"吗?还有什么?
  • 有什么建议吗?

标签: php csv


【解决方案1】:

您的字段可能不匹配。 先尝试打印结果

https://www.php.net/manual/en/function.fgetcsv.php

示例 #1 读取并打印 CSV 文件的全部内容

<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多