Simplemente use fputcsv se encarga de escapar y producir datos csv correctos.
<?php
$list = array (
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
?>
Salida:
aaa,bbb,ccc,dddd
123,456,789
"""aaa""","""bbb"""
Editar
Siempre puedes usar una combinación de tmpfile para abrir un archivo que se eliminará automáticamente al final de la solicitud, escríbalo y, luego de crear el informe, emita su contenido con fread . Debe usar fread ya que tmpfile devuelve un recurso; de lo contrario, puede usar tempnam + file_get_contents pero en ese caso, debe abrir el archivo y limpiarlo después de leerlo usted mismo.