Php fgetcsv-向没有引号的字段添加引号

Php fgetcsv-向没有引号的字段添加引号,php,csv,text-files,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 /&

我有一个文本文件(用逗号分隔,一些字段用双引号括起来),当我使用以下命令解析它时:

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);
}

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

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

fgetcsv会删除引号

使用fputcsv,您可以编写cvs文件。它有关于是否使用引号的选项,但对所有字段都有相同的选项

检查并删除引号

使用fputcsv,您可以编写cvs文件。它有关于是否使用引号的选项,但对所有字段都有相同的选项


选中并

是它会删除引号,因为它假定您需要列的数据,而引号不是数据的一部分。改用
fget

是它删除引号,因为它假定您需要列的数据,而引号不是数据的一部分。改用
fget

是否有其他方法可以解析并查看引号,以便向没有引号的字段添加引号?只需向所有字段添加引号即可。您将不会得到任何带引号的字段。使用fgetcsv提取后,所有字段都不会有引号,除非引号是原始字符串的一部分,并且假定在添加到csv文件之前已正确转义。将它们添加到文件时,请使用fputcsv()并让php进行引用。请参阅Jimmy Shedder答案中的链接。如果您想检查或分析原始文件(“fake.txt”)中写入的行,请将它们放入带有file()的数组中。是否有其他方法可以分析这些行并查看引号,以便向没有引号的字段添加引号?只需向所有字段添加QUOET即可。您将不会得到任何带引号的字段。使用fgetcsv提取后,所有字段都不会有引号,除非引号是原始字符串的一部分,并且假定在添加到csv文件之前已正确转义。将它们添加到文件时,请使用fputcsv()并让php进行引用。请参阅Jimmy Shedder答案中的链接。如果您想在原始文件(“fake.txt”)中写入行时检查或解析这些行,请使用file()将它们放入数组中Jimmy找到了,用fgetcsv读入你的文件,然后用fputcsv写一个新版本,你应该有一个正确引用的文件。这是个好主意-但我希望先检查一下文本文件,因为有些文件可能已经正确格式化了。Jimmy知道了,使用fgetcsv读取文件,然后使用fputcsv编写新版本,您应该有一个正确引用的文件。这是一个好主意-但我希望先检查文本文件,因为有些文件可能已经正确格式化。请参阅相关问题:您可能有一个格式不正确的输入文件,能否从传入的CSV中粘贴一些问题行?请参阅相关问题:您可能有一个格式不正确的输入文件,能否从传入的CSV中粘贴一些问题行?
$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);
}