【问题标题】:Converting TAB Delimited to CSV将制表符分隔转换为 CSV
【发布时间】:2013-06-11 11:10:46
【问题描述】:

我目前正在使用以下代码打开一个 TAB 分隔文件...

if (($handle = fopen($filetxt, "r")) !== FALSE) {

while (($data = fgetcsv($handle, 0, "\t")) !== FALSE) {
    // var_dump($data);
    $num = count($data);
    echo "<br>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
    }
}
fclose($handle);
}

现在我只是想弄清楚如何使用 fputcsv 将数据放入 CSV。一个很好的例子——现在我只是想把标题变成一个 CSV,然后我可以从那里开始。

现在的数据(正在回显)看起来像这样......

part_number
aaia_part_term_id
short_description
bullet_points
list_price
jobber_price
base_price
epc_code
length
width
height
weight
image_name

如果我能弄清楚如何仅将标头回显到 CSV 中,我想我可以弄清楚其余的。

【问题讨论】:

    标签: php csv converter export-to-csv


    【解决方案1】:

    fopen 只为您提供文件的句柄。 csv 文件的格式依赖于每一行,您读取文件的方式一次使用所有内容,尝试:

    <?PHP
    
    if($handle = fopen($filetext, "r") !== FALSE){
    
     while (!feof($handle)) {
      $line_of_text = fgets($handle);
      foreach( fgetcsv($line_of_text, 0, "\t") as $csv_item)
       print $csv_item."," ;
      print "<br>";
     }
    
     fclose($handle);
    }
    
    ?>
    

    我没有测试过这个

    【讨论】:

      【解决方案2】:

      由于 CSV 文件只是一个逗号分隔的数据文件,因此仅逐行读取当前制表符分隔的文件并将制表符替换为逗号可能会更简单

      if (($handle = @fopen($filetxt, "r")) !== false) {
        while (($line = fgets($handle, 0)) !== false) {
          $csv_line = str_replace("\t", ",", $line);
          // write $csv_line to your csv file
        }
        fclose($handle);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-21
        • 1970-01-01
        • 2020-11-24
        相关资源
        最近更新 更多