将输入写入CSV
问题描述:
我是新来的PHP,无法弄清楚这一点。将输入写入CSV
我有2个输入(姓名和电子邮件)。我需要将它写入CSV文件并单击下载。我发现我需要fputcsv()函数并形成阵列数组...
但不知何故,我不能看到如何正确地形成该数组... ...有人可以给我一个提示?
林已经wirting到txt文件......而仅仅倾斜它转换为csv ...
public function invokeAction(CakeRequest $request){
if ($this->request->is('post')) {
if(isset($_POST['subName']) && isset($_POST['subEmail'])) {
$data = $_POST['subName'] . '-' . $_POST['subEmail'] . "\n";
$ret = file_put_contents('../tmp/subs.txt', $data, FILE_APPEND | LOCK_EX);
unset($_POST['subName']);
unset($_POST['subEmail']);
}
}
答
你需要做的唯一的事情就是用“”替换子名和subEmail之间的破折号并将您的文件重命名为subs.csv。
public function invokeAction(CakeRequest $request){
if ($this->request->is('post')) {
if(isset($_POST['subName']) && isset($_POST['subEmail'])) {
$data = $_POST['subName'] . ',' . $_POST['subEmail'] . "\n";
$ret = file_put_contents('../tmp/subs.csv', $data, FILE_APPEND | LOCK_EX);
unset($_POST['subName']);
unset($_POST['subEmail']);
}
}
CSV不是一种特殊的文件格式。这只是具有特定格式的纯文本。
答
谢谢Wim的答案。我的解决方案是几乎相同,但只是在有人需要它的情况下:
public function invokeAction(CakeRequest $request){
if ($this->request->is('post')) {
if(isset($_POST['subName']) && isset($_POST['subEmail'])) {
// $data = $_POST['subName'] . '-' . $_POST['subEmail'] . "\n";
$subName=$_POST['subName'];
$subEmail=$_POST['subEmail'];
$subs[] = array("$subName","$subEmail");
//$ret = file_put_contents('../tmp/subs.txt', $data, FILE_APPEND | LOCK_EX);
$fp = fopen('../webroot/subs.csv', 'a');
foreach ($subs as $fields) {
fputcsv($fp, $fields);
}
fclose($fp);
unset($_POST['subName']);
unset($_POST['subEmail']);
}
}
@Carsten:_“不需要fputcsv或任何东西”_ - 是的,需要。只要其中一个值包含分隔符,您的简单解决方案就会中断。 – CBroe 2015-02-10 08:01:02