Skip to content

Commit cbd4f9f

Browse files
Escape character bug fixes
1 parent 0a3a033 commit cbd4f9f

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/CSV.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)