In all those cases you need a bug free csv writer with custom record seperating capability:
<?php
/**
* Custom fputcsv
* @param int $handle filehandle
* @param mixed[] $fields array of values to write
* @param string $delimiter field delimiter
* @param string $enclosure field enclosures
* @param string $escape_char escape enclosure chars in fields
* @param string $record_seperator
* @return int characters written
*/
function _fputcsv($handle, $fields, $delimiter = ",", $enclosure = '"', $escape_char = "\\", $record_seperator = "\r\n")
{
$result = [];
foreach ($fields as $field) {
$result[] = $enclosure . str_replace($enclosure, $escape_char . $enclosure, $field) . $enclosure;
}
return fwrite($handle, implode($delimiter, $result) . $record_seperator);
}
?>