• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 602
  • Last Modified:

Help with fputcsv

I'm exporting an array to a csv file, but it isn't formatting correctly,

This is the array:

Array ( [0] => Array ( [id] => 41 [item] => HY87MB [cost] => $43,679 ) [1] => Array ( [id] => 39 [item] => UYITHO [cost] => $79,202.10 ) )

And the csv file looks like this:
41,HY87MB,$43,679
39,UYITHO,$9,202.10

When, I want it to look like this:
41,"HY87MB","$43,679"
39,"UYITHO","$9,202.10"
/* HERE IS THE CODE I'M USING */
 
$fp = fopen(testfile.csv', 'w');
foreach($result as $line) {
                foreach($line as $line2) {
                                fputcsv($fp, split(',',$line2));
                }
}
fclose($fp);
header('Location: testfile.csv');

Open in new window

0
n00b0101
Asked:
n00b0101
  • 2
  • 2
1 Solution
 
MMDeveloperCommented:
have you tried forcing the additional arguments?

fputcsv($fp, split(',',$line2), ",", "\"");
0
 
n00b0101Author Commented:
Yes, I did try that, but I got the same result.
0
 
MMDeveloperCommented:
as a temporary workaround, try this class. I just wrote it and have not tested it.
<?php
 
 
class putcsv {
	public $fp = NULL;
	public $row = array();
 
	public function putCSV($row) {
		$this->row = $row;
 
		$data = array();
 
		foreach ($row as $k => $v) {
			$data[] = $this->formatCSVCell($v);
		}
 
		fwrite($this->fp, implode(",", $data) . "\n");
	}
 
	private function formatCSVCell($data) {
		$useQuotes = false;
 
		$quotable = array (
				"\"" => "\"\"",
				"," => ",",
				"\n" => "\n",
				"$", "$"
			);
 
		foreach ($quotable as $char => $repl) {
			if (eregi($char, $data)) {
				$useQuotes = true;
			} else {}
		}
 
		if ($useQuotes == true) {
			foreach ($quotable as $char => $repl) {
				$data = str_replace($char, $repl, $data);
			}
 
			$data = "\"" . $data . "\"";
		}
		else {
 
		}
 
		return $data;
	}
}
 
$putcsv = new putcsv();
$putcsv->fp = fopen("file.csv", "w+");
 
foreach ($lines as $line) {
	$putcsv->putCSV($line);
}
fclose($putcsv->fp);
?>

Open in new window

0
 
n00b0101Author Commented:
thanks for this
0

Featured Post

Receive 1:1 tech help

Solve your biggest tech problems alongside global tech experts with 1:1 help.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now