@@ -419,34 +419,36 @@ public function toJson(array $header=NULL) : string {
419419 */
420420 public function toCsv (array $ header =NULL ) : string {
421421 $ parsedData = $ this ->toArray ($ header );
422- $ csvData = '' ;
422+ $ fileStream = fopen ( ' php://memory ' , ' r+ ' ) ;
423423 if (!empty ($ this ->header )) {
424424 if (!empty ($ header )) {
425425 //Add csv enclosure
426426 if ($ this ->ignoreEnclosure === false ) {
427- $ csvData .= $ this ->enclosure . implode ( $ this -> enclosure . $ this -> delimiter . $ this ->enclosure , $ header ). $ this ->enclosure . PHP_EOL ;
427+ fputcsv ( $ fileStream , $ header , $ this ->delimiter , $ this ->enclosure , $ this ->escape ) ;
428428 } else {
429- $ csvData .= implode ( $ this ->delimiter , $ header ). PHP_EOL ;
429+ fputcsv ( $ fileStream , $ header , $ this ->delimiter , '' , $ this -> escape ) ;
430430 }
431431 } else {
432432 //Add csv enclosure
433433 if ($ this ->ignoreEnclosure === false ) {
434- $ csvData .= $ this ->enclosure . implode ( $ this ->enclosure . $ this -> delimiter . $ this ->enclosure , $ this ->header ). $ this -> enclosure . PHP_EOL ;
434+ fputcsv ( $ fileStream , $ this ->header , $ this ->delimiter , $ this ->enclosure , $ this ->escape ) ;
435435 } else {
436- $ csvData .= implode ( $ this ->delimiter , $ this ->header ). PHP_EOL ;
436+ fputcsv ( $ fileStream , $ this -> header , $ this ->delimiter , '' , $ this ->escape ) ;
437437 }
438438 }
439439 }
440440 if (!empty ($ parsedData )) {
441441 foreach ($ parsedData as $ row ) {
442442 //Add csv enclosure
443443 if ($ this ->ignoreEnclosure === false ) {
444- $ csvData .= $ this ->enclosure . implode ( $ this -> enclosure . $ this -> delimiter . $ this ->enclosure , $ row ). $ this ->enclosure . PHP_EOL ;
444+ fputcsv ( $ fileStream , $ row , $ this ->delimiter , $ this ->enclosure , $ this ->escape ) ;
445445 } else {
446- $ csvData .= implode ( $ this ->delimiter , $ row ). PHP_EOL ;
446+ fputcsv ( $ fileStream , $ row , $ this ->delimiter , '' , $ this -> escape ) ;
447447 }
448448 }
449449 }
450+ rewind ($ fileStream );
451+ $ csvData = stream_get_contents ($ fileStream );
450452 return $ csvData ;
451453 }
452454
0 commit comments