我想重写下面的代码来生成一个字符串。这个字符串我想附加到一个eamil上。它应该显示为csv文件。
$fh = fopen($file,'w');
function __outputCSV(&$vals, $key, $filehandler) {
fputcsv($filehandler, $vals, ';', '"');
}
array_walk($aData, '__outputCSV', $fh);
fclose($fh);
有什么想法吗?
答案 0 :(得分:0)
您最好的办法是获得一个MIME兼容的电子邮件类,可以发送带附件的电子邮件。我记得前一段时间使用RMail或PHPMimeMail,你必须谷歌。
否则,您需要自己学习如何构建MIME邮件。但是,对于所有值得我努力的麻烦,我真的会建议你找一个已经为你做过的课程。
编辑:
我一开始并不理解你的问题,也许你应该完全重新格式化并改变你的头衔。这是我的建议:
$data = '';
foreach($aData as $aDataLine) {
foreach($aDataLine as $aDataKey => $aDataField) {
$aDataLine[$aDataKey] = '"'.str_replace('"', '\\"', $aDataField).'"';
}
$data .= implode(',', $aDataLine)."\n";
}
//$data contains your CSV
我不认为我忘了什么,它应该开箱即用......
答案 1 :(得分:0)
明显而懒惰的方法不是重写它,而是简单地创建一个临时文件并在之后调用file_get_contents()
。
使用PHP手册中提供的this class作为如何编写自定义协议处理程序的示例,以及以下示例代码:
function __outputCSV(&$vals, $key, $filehandler) {
fputcsv($filehandler, $vals, ';', '"');
}
stream_wrapper_register("var", "VariableStream");
$myCSVdata = "";
$fh = fopen('var://myCSVdata', 'w');
array_walk($aData, '__outputCSV', $fh);
fclose($fh);
echo $myCSVdata; // Ta Da!