删除生成的文件中的引号

时间:2018-03-10 11:02:32

标签: php fopen

我正在使用脚本将Magento导出的CSV文件转换为制表符分隔的TXT文件。出于某种原因,引号之间有几列。有没有办法完全删除引号?

我的剧本:

    <?php
    $row = 1;
    if (($handle = fopen("/var/www/html/var/export/export_orders.csv", "r")) && $myfile = fopen("/var/www/html/var/export/export_orders.txt", "w")) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $num = count($data);
            $row++;
            fputcsv($myfile, $data, "\t");
        }
        fclose($handle);
        fclose($myfile);
    }
    ?>

我的输出(txt):

    100009407   "2018-03-07 02:16:39"   processing  PayPal      freeshipping_freeshipping   6007.0000   0.0000  0.0000  0.0000  6007.0000   6007.0000   6007.0000   0   0   34.0000 2004    "customer name" xxxx    "xxxx"  xxxx4@gmail.com "xxxx"                  "address1"  76120   xxxx    "xxxx"  processing  LP012   8855708513503   99.0000 99.0000 2.0000  2.0000  0.0000  0.0000  0.0000  0.0000  0.0000  198.0000    "Home delivery - Nationwide"    "10:00 "    " 17:00"    "2018-03-08 00:00:00"   

为什么要引用某些数据?就像我说的,我想没有引号。非常感谢一些专家建议,谢谢

2 个答案:

答案 0 :(得分:1)

当使用"正常的预期行为时,PHP会将fputcsv放在任何有空格的地方。

所以这个

"10:00 "

有空格,

"2018-03-07 02:16:39"

"customer name"

在大多数情况下,除非出现其他问题,这应该没问题,因为PHP可以很好地阅读,Excel也可以。

现在,如果你想摆脱一些空间,比如10:00那么你可以使用修剪和数组映射

 $data = array_map('trim', $data);

<强>更新

您可以使用implode,也可以将空字节"\0"chr(0)放入机箱中。你会认为将''空置在那里会有效,但它不会。但是不要说我告诉你这样做......哈哈......这有点像黑客。

您可以使用这一小段代码进行测试

$f = fopen('php://temp', "w+");

$a = ["the fox", "jumpled", "over the rox"];

fputcsv($f, $a, "\t", chr(0));

rewind($f);

echo str_replace("\t", '\t', fgets($f));

输出:

the fox\tjumpled\tover the rox

还要忽略我对动态流包装器的使用....

答案 1 :(得分:1)

虽然,我不知道你为什么这么做,因为csv-format被广泛使用,但如果你不想要这种格式的任何限制,你可以用{{{{{{{{{ 1}}数组值和implod它到文件:

fwrite