PHP-将制表符分隔的TXT文件转换为CSV


PHP - Convert Tab Delimited TXT file to CSV

我正在尝试将制表符分隔的.txt文件转换为.csv文件。

我能够使用fgetcsv((打开txt文件,并使用以下代码获取每一行的数据:

$handle = fopen("fileurl.com", "r");
$row = 1;
if (($handle = fopen("fileurl.com", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, "'t")) !== 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";
        }
        print_r($data);
    }
    fclose($handle);
}

现在我只需要从数据数组中创建一个csv文件。我试过使用fputcsv((,但没有成功。我试过这样的方法,但它创建的csv文件不正确,只有一行:

$fp = fopen('file.csv', 'w');
fputcsv($fp, $data, "'t");
fclose($fp);

一个如何从$data数组创建.csv文件的例子会很好。我花了很多时间研究并试图弄清楚这一点,但一直没能奏效。

fputcsv()一次只写入一行。不是整个文件。您需要循环使用$data,以便将所有数据添加到CSV文件中。

$fp = fopen('file.csv', 'w');
foreach ($data as $line) {
    fputcsv($fp, $line);
}
fclose($fp);

使用代码的完整示例:

$handle = fopen("fileurl.com", "r");
$lines = [];
if (($handle = fopen("fileurl.com", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, "'t")) !== FALSE) {
        $lines[] = $data;
    }
    fclose($handle);
}
$fp = fopen('file.csv', 'w');
foreach ($lines as $line) {
    fputcsv($fp, $line);
}
fclose($fp);

这是将数据写入csv文件的正确方法

    <?php
$list = array (
    array('aaa', 'bbb', 'ccc', 'dddd'),
    array('123', '456', '789'),
    array('"aaa"', '"bbb"')
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
    fputcsv($fp, $fields);
}
fclose($fp);
?>

在fputcsv中,我们使用第二个参数作为数组。

及其$attachment=mb_convert_encoding($attachment,'UTF-8',$parts[$i]->parameters[0]->值(;tsv到csv也需要。它会将文件类型更改为text/plain