Функция fputcsv форматирует строку в виде CSV и записывает её в файловый указатель. Имеется ли в РНР функция, выполняющая аналогичное действие, но без записи в файл?
<?php
function csv_ceil($t0) // csv-преобразование текста одной ячейки
{
$q = $GLOBALS['csv_quot'];
$t1 = str_replace("\x0D\x0A", "\x0A", $t0); $f1 = $t0 != $t1;
$t0 = str_replace($q, $q.$q, $t1); $f2 = $t0 != $t1;
$t1 = '';
$f3 = strpos($t0, $GLOBALS['csv_sep']) !== false;
if($f3||$f2||$f1) $t0 = $q.$t0.$q;
return $t0;
}
function csv_row($r, $s=';', $q='"') // csv-преобразование текста одной строки
{
$GLOBALS['csv_quot']= $q;
$GLOBALS['csv_sep']= $s;
return implode($s, array_map('csv_ceil', $r))."\x0D\x0A";
}
// далее пример применения
// готовим вывод в файл
header("Content-Type: Application/octet-stream; name=\"csv.csv\"");
header("Content-Disposition: attachment; filename=\"csv.csv\"");
// берем текст позаковыристее
$txt =file_get_contents(__FILE__);
//делаем массив из двух одинаковых ячеек с таким текстом
$row[0]= $row[1] = $txt;
//получаем csv с кавычкми "..." и разделителями полей 1;2;3
echo csv_row($row, ';','"');
?>