Преобразование TAB с разделителями в CSV

В настоящее время я открываю файл с разделителями 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);
}

Теперь я просто пытаюсь понять, как я могу поместить данные в CSV с помощью fputcsv. Пример был бы отличным - прямо сейчас я просто пытаюсь получить заголовки в 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, думаю, я смогу понять и все остальное.


person Brian Schroeter    schedule 14.06.2013    source источник


Ответы (2)


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);
}

?>

я не проверял это

person Andre Helberg    schedule 14.06.2013

Поскольку файл 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);
}
person compid    schedule 14.06.2013