запись в фаил csv и экранирование " для нормального просмотра в экселе с хаком

AnrDaemon

Продвинутый новичок
господа не входите в полемику!
я вспомнил почему не пользуюсь fputcsv
  1. эта функция делает тоже что и я тоесть разбирает массив в строку и записывает построчно fwrite (возможно я не прав)
Прав.

[*]я сам создал свою функцию записи в фаил со своими правилами, делителями и ограничениями
Неленивый дурак - хуже, чем просто ленивый или просто дурак.
Мало того, что он не решает проблем, так он ещё создаёт проблемы другим.

[*]у меня там есть массивы у которых есть вложенные массивы которые могут быть пустыми, то есть мне нужно собрать массив в fputcsv из всего этого и чтобы столбцы с пустыми значениями не сдвигались, сложно, проще собрать строку и вместо пустого места вставить сразу делитель ';' тогда не будет смещения по столбцам (это все для экселя)
Всего то нужно сделать array_map с калбэком, который сделает всё, чтобы fputcsv получила на входе одномерный массив строк/чисел.

[*]только делитель ; с " " отлично отображает данные в эксель по ячейкам без всяких преобразований
Любой разделитель. Вообще любой.

[*]где то прочитал что fputcsv в каких то моментах может не оборачивать строку в " "
Может. Если в строке нет кавычек и переводов строк. Например, если это - число.

[*]и об этом слышал Использование php-функции fputcsv записывает только \n и не может быть настроено (но не уверен)
Ну и что? Эксель всё съест. ДАже если не съест, записать во временный файл, а потом прогнать foreach($file as $line) fwrite "$line\r\n";
намного проще и прямее, чем городит огород с ручной генерацией CSV.

возможно я в чем-то не прав не ругайте сильно, буду впитывать все нравоучения
Ты неправ в первую очередь в том, что где-то что-то услышал и поверил, вместо того, чтобы проверить или хотя бы прочесть документацию.
 

WMix

герр M:)ller
Партнер клуба
@Petrrrr, fputcsv самый правильный и быстрый способ.
для ms-экселя лучше кодировать в utf16 без BOM.
 
Сверху