将输入写入CSV

时间:2015-02-10 07:37:42

标签: php csv

我是PHP的新手,无法弄清楚这一点。

我有2个输入(姓名和电子邮件)。我需要将其写入CSV文件并单击下载。我发现我需要fputcsv()函数并形成数组数组......

但不知何故,我无法正确看到如何正确地形成这个数组......有人可以给我一个提示吗?

我已经知道了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']);
         }   
    }

2 个答案:

答案 0 :(得分:0)

您唯一需要做的就是使用","替换subName和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不是特殊的文件格式。它只是具有特定格式的纯文本。

答案 1 :(得分:0)

谢谢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']);
         } 
    }