如何在导出数组变量时删除字符串双引号?

时间:2016-02-09 14:29:18

标签: php arrays csv

我有一个PHP脚本,它以TXT格式读取数据库,清理日期字段并将其转换为CSV格式。

我必须读取一行,将每个字段(除以字符数)分成一个数组,应用清理日期功能并按特定顺序将其导出到CSV文件中。

以此行为例:

001001010006700603927229/05/201529/05/2016TELESALUD                                         J312324366523/01/2016RODRIGUEZ ALBERTO                                 0012345678                    RODRIGUEZ JUAN                                    008765432101/01/1960MTITULAR                                                                                   APLICA     

我把它分成一个数组:

$input = [
        trim(substr($line, 0, 3)),
        trim(substr($line, 3, 3)),
        trim(substr($line, 6, 7)),
        trim(substr($line, 13, 9)),
        trim(substr($line, 22, 10)),
        trim(substr($line, 32, 10)),
        trim(substr($line, 42, 50)),
        trim(substr($line, 92, 1)),
        trim(substr($line, 93, 10)),
        trim(substr($line, 103, 10)),
        trim(substr($line, 113, 50)),
        trim(substr($line, 163, 10)),
        trim(substr($line, 173, 20)),
        trim(substr($line, 193, 50)),
        trim(substr($line, 243, 10)),
        trim(substr($line, 253, 10)),
        trim(substr($line, 263, 1)),
        trim(substr($line, 264, 40)),
        trim(substr($line, 304, 50)),
        trim(substr($line, 354, 10))
    ];

然后,在将函数应用于对应字段后,我使用此数组重新组织它们:

$output = [
    '3',
    '3',
    $input[10],
    $input[13],
    $input[15],
    $input[16],
    '',
    '',
    '',
    '',
    $input[17],
    '',
    $input[3],
    $input[14],
    $input[4] ." " .$input[5],
    '',
    $input[19],
    $input[0] .$input[1] .$input[2] .$input[3]
];

最后,使用此功能,我将结果导出到CSV:

fputcsv($csv, $output, ";");

这是我的麻烦。 PHP决定在特定字段中包含双引号。这是结果:

3;3;"RODRIGUEZ ALBERTO";"RODRIGUEZ JUAN";19600101;M;;;;;TITULAR;;006039272;0087654321;"20150529 20160529";;APLICA;0010010100067006039272

所有字段都应该是字符串格式,但我的猜测是PHP在包含空格的字段中包含双引号。

如果我将机箱指定为空字符,请执行以下操作:

fputcsv($csv, $output, ";", "");

或者像这样:

fputcsv($csv, $output, ';', chr(0));

它不会在CSV中写入任何行。并且apache日志表明机箱必须是一个角色。我们不能选择白色空间。

此脚本在小型服务器上运行,但处理数百万行。我不想包含另一个删除引号的函数。

有没有办法告诉PHP不要在CSV中包含那些双引号?

1 个答案:

答案 0 :(得分:0)

为什么不使用不同的PHP函数,比如fwrite()?