@Alapaska
Coder

Как удалить пустые строки в CSV файле PHP функцией?

В файле wb_posts.csv есть пустые строки, которые рушат скрипт:

ID,post_author,post_date,post_date_gmt,post_content,post_title,post_excerpt,post_status,comment_status,ping_status,post_password,post_name,to_ping,pinged,post_modified,post_modified_gmt,post_content_filtered,post_parent,guid,menu_order,post_type,post_mime_type,comment_count

507536,1,2022-10-23 00:00:00,2022-10-23 00:00:00,,"20 inch Voile Strap, Black - Musta",Väri: Musta,publish,closed,closed,,20-inch-voile-strap-black,,,2022-10-23 01:00:00,2022-10-23 01:00:00,,502451,https://site.fi/?post_type=product_variation&p=507...

Как отформатировать php кодом весь csv файл так, чтобы было вот так?:

ID,post_author,post_date,post_date_gmt,post_content,post_title,post_excerpt,post_status,comment_status,ping_status,post_password,post_name,to_ping,pinged,post_modified,post_modified_gmt,post_content_filtered,post_parent,guid,menu_order,post_type,post_mime_type,comment_count
507536,1,2022-10-23 00:00:00,2022-10-23 00:00:00,,"20 inch Voile Strap, Black - Musta",Väri: Musta,publish,closed,closed,,20-inch-voile-strap-black,,,2022-10-23 01:00:00,2022-10-23 01:00:00,,502451,https://site.fi/?post_type=product_variation&p=507...
  • Вопрос задан
  • 178 просмотров
Решения вопроса 1
@rPman
осторожно, пустые строки в csv могут оказаться частью данных в строковых колонках, php fgetcsv корректно их обрабатывает а вот всякие упрощенные file и fgets ... нет

правильно - написать приложение из 10 строчек типа такого:
$r=fopen('filename.csv','r');
$w=fopen('result.csv','w');
while(!feof($r))
{
  $row=fgetcsv($r,0,',','"'); // из-за 0 вторым параметром будет работать медленно, если знаешь максимальную длину строки в файле, пропиши ее тут с запасом
  if(empty($row)) continue;
  fputcsv($w,$row,',','"');
}
fclose($w);
fclose($r);


идеально - не пользоваться этим говноинструментом, на столько отвратительного способа передачи данных еще нужно поискать, сколько занимаюсь обработкой данных, столько натыкаюсь на постоянные ошибки тех кто экспортирует данные в csv. Ну есть же другие удобные инструменты, выдай дамп json (есть неплохой вариант - размещать записи построчно, одна строка один json объект), или одно время любили xml (у него тоже есть проблемы)

Абсолютно верный путь - передавать данные в базе данных sqlite, или пусть будет проприетарный майкрософтвский .mdb если это принципиально, главное чтобы не изобретали способы сериализации чисел строк дат, списков и прочего.

p.s. для тех кто не понял, \n внутри строк это часть стандарта
escaped = DQUOTE *(TEXTDATA / COMMA / CR / LF / 2DQUOTE) DQUOTE
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы