php fputcsv и поля включения

Я как раз собирался задать те же вопросы как вопрос aksed здесь.... Принуждение fputcsv для Использования Корпуса Для *все* Поля

Вопрос был

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

Например, Вы могли бы закончить со строкой как это

11, "Bob", Jenkins, "200 основных Св. США", и т.д.

За исключением добавления поддельного пространства в конец каждого поля, там какой-либо способ вынудить fputcsv всегда включить столбцы с корпусом (значения по умолчанию к") символ?

Ответ был:

Нет, fputcsv () только включает поле при следующих условиях

/* enclose a field that contains a delimiter, an enclosure character, or a newline */
if (FPUTCSV_FLD_CHK(delimiter) ||
  FPUTCSV_FLD_CHK(enclosure) ||
  FPUTCSV_FLD_CHK(escape_char) ||
  FPUTCSV_FLD_CHK('\n') ||
  FPUTCSV_FLD_CHK('\r') ||
  FPUTCSV_FLD_CHK('\t') ||
  FPUTCSV_FLD_CHK(' ')
)

Существует не, "всегда включают" опцию.

Я должен создать файл CSV, будет каждое включенное поле... Каково было бы лучшее решение?

Заранее спасибо...

8
задан Community 23 May 2017 в 11:48
поделиться

1 ответ

Сверните свою собственную функцию - это не сложно:

 function dumbcsv($file_handle, $data_array, $enclosure, $field_sep, $record_sep)
 {
     dumbescape(false, $enclosure);
     $data_array=array_map('dumbescape',$data_array);
     return fputs($file_handle, 
         $enclosure 
         . implode($enclosure . $field_sep . $enclosure, $data_array)
         . $enclosure . $record_sep);
 }
 function dumbescape($in, $enclosure=false)
 {
    static $enc;
    if ($enclosure===false) {
        return str_replace($enc, '\\' . $enc, $in);
    }
    $enc=$enclosure;
 }

(выше используется экранирование в стиле unix)

C.

8
ответ дан 5 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

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