fgetcsv - 将引号添加到没有引号的字段

时间:2010-01-13 21:32:36

标签: php csv text-files

当我使用它解析它时,我有一个文本文件(用逗号分隔的逗号分隔的逗号):

if (($handle = fopen('C:\tester\fake.txt', "r")) !== FALSE) {
    while (($data = fgetcsv($handle, ",")) !== 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);
}

它显示每个字段没有引号,fgetcsv是否自动删除它?

如何让它显示没有引号的字段并为它们添加引号然后保存文件?可能的?

全部谢谢

更新

我刚试过fputcsv,我发现写的文件周围没有引号,只有极少数,比初始文件少!我做错了什么?

$row = 1;
$newfile = fopen('C:\new-file.txt', "w");

if (($handle = fopen('C:\fake.txt', "r")) !== FALSE) {
    while (($data = fgetcsv($handle, ",")) !== FALSE) {
        $num = count($data);
            fputcsv($newfile, $data, ',', '"');
    }
    fclose($handle);
    fclose($newfile);
}

3 个答案:

答案 0 :(得分:2)

fgetcsv 会删除引号。

使用 fputcsv ,您可以编写cvs文件。它确实有关于使用引号的选项,但它会对所有字段都做同样的事情。

检查http://www.php.net/fgetcsvhttp://www.php.net/fputcsv

答案 1 :(得分:1)

引号是CSV文件格式的一部分(包含或包含换行符的字段的引号),因此fgetcvs将(并且应该)删除它们。

答案 2 :(得分:0)

是的,它会删除引号,因为它假定您希望列的数据和引号不是数据的一部分。请改用fget