Запись CSV в файл без корпусов в PHP

Есть ли встроенная функция или сплошной класс / библиотека для записи массива в виде строки в CSV-файле без вложений? fputcsv умолчанию будет " если ничего не передано для параметра оболочки. Google не дает мне результатов (возвращает результаты для целого ряда страниц о fputcsv ), а библиотеки PEAR более или менее используют те же функции, что и fputcsv .

Что-то, что работает точно так же, как fputcsv , но позволит поля оставаться без кавычек.

в настоящее время: "field 1","field 2",field3hasNoSpaces

желательно: field 1,field 2,field3hasNoSpaces

Solutions Collecting From Web of "Запись CSV в файл без корпусов в PHP"

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

Мне интересно, почему вы не можете просто использовать что-то вроде этого?

 <?php $fields = array( "field 1","field 2","field3hasNoSpaces" ); fputs(STDOUT, implode($fields, ',')."\n"); 

работает с функцией chr () :

 fputcsv($f,$array,',',chr(0)); 

Разве это не работает?

 fputcsv($fp, split(',', $line),',',' '); 

Ну car(0) не сработала, поскольку значение NULL , скорее всего, подавит большинство парсеров csv.

Я закончил использование fputcsv() для создания исходного файла, затем просмотрел и удалил все кавычки. Элегантный? Может быть, нет, но он выполнил свою работу :).

 <?php $filename = "sample.csv"; $handle = fopen($filename, 'w+'); fputcsv($handle, ['column 1','column 2']); $data = ['sample','data']; fputs($handle, implode($data,',')."\n"); // or fwrite($handle, implode($data,',')."\n"); fclose($handle); $headers = array( 'Content-Type' => 'text/csv', ); 

fputcsv($file, $data, ';', chr(127));

Это то, что я использую для добавления стандартного CSV в массив …

 function csv_explode($delim=',', $str, $enclose='"', $preserve=false){ $resArr = array(); $n = 0; $expEncArr = explode($enclose, $str); foreach($expEncArr as $EncItem){ if($n++%2){ array_push($resArr, array_pop($resArr) . ($preserve?$enclose:'') . $EncItem.($preserve?$enclose:'')); }else{ $expDelArr = explode($delim, $EncItem); array_push($resArr, array_pop($resArr) . array_shift($expDelArr)); $resArr = array_merge($resArr, $expDelArr); } } return $resArr; } 

Затем вы можете выводить все, что хотите, в цикл foreach.

Недостаток CSV-файла без вложений означает, что ошибочная запятая в пользовательском вводе будет забивать строку. Поэтому вам нужно удалить запятые перед написанием строки CSV.

Сложной частью обработки CSV является разбор приложений, что делает функции PHP и PEAR CSV ценными. По сути, вы ищете файл с разделителями-запятыми для столбцов и строки с разделителями строк для строк. Вот простая отправная точка:

 <?php $col_separator= ','; $row_separator= "\n"; $a= array( array('my', 'values', 'are', 'awes,breakit,ome'), array('these', 'values', 'also', "rock\nAND\nROLL") ); function encodeRow(array $a) { global $col_separator; global $row_separator; // Can't have the separators in the column data! $a2= array(); foreach ($a as $v) { $a2[]= str_replace(array($col_separator, $row_separator), '', $v); } return implode($col_separator, $a2); } $output= array(); foreach ($a as $row) { $output[]= encodeRow($row); } echo(implode($row_separator, $output)); ?> 

chr(0) также работал для меня:

  fputcsv($fp, $aLine, $sDelimiter, chr(0)); 

Догадаться. Переходя в ascii-код для Null для функции car() кажется, все работает отлично.

fputcsv($f, $array, $delimiter, car(0))

Спасибо за ответы всем !!!