Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-将制表符分隔的TXT文件转换为CSV_Php_Csv - Fatal编程技术网

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

PHP-将制表符分隔的TXT文件转换为CSV,php,csv,Php,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 = coun

我正在尝试将制表符分隔的.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);
}
举例说明如何从$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);
?>

以及$attachment=mb\u convert\u编码($attachment,'UTF-8',$parts[$i]->参数[0]->值);tsv也需要csv。它会将文件类型更改为text/plain

谢谢您的回答。我尝试了这个方法并得到了以下错误:警告:fputcsv()期望参数2是数组,字符串givenI更新了我的答案您可以使用您的代码作为示例。您没有将数据放入此操作所需的数组中。这会收到一条警告:为foreach()在此行$fp=fopen('file.csv','w')提供的参数无效;将
$data
更改为
$lines
及其$attachment=mb\u convert\u编码($attachment,'UTF-8',$parts[$i]>参数[0]->value);tsv也需要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);
?>