在CSV文件中转义逗号

时间:2012-07-19 20:23:26

标签: php csv

我正在尝试添加一项功能,允许wvb应用的用户使用CSV文件批量上传数据 - 除非数据在实际字段中包含逗号,否则一切都很有效。

关于这一点有很多帖子,我已经阅读了许多解决方法,主要是用双引号括起逗号,但我无法弄清楚如何为我的代码执行此操作。

最终我不能依赖用户在输入时为我这样做,所以我需要在上传到数据库之前将其作为上传过程的一部分 - 我尝试使用tab作为备用分隔符,但Excel似乎非常不一致在如何处理标签分离,所以我排除了。

(sanitiseData是我在整个网站中用来清理所有用户输入数据的函数)

        $handle = fopen($file_path, 'r');  
        $row_count=0;

        while (($data = fgetcsv($handle, 0, ',')) !== FALSE) {  
            if ($row_count==0) { 
                $row_count++;
                } else {
                    $row_count++;
                    $works_id = sanitiseData($data[0]);
                    $title = sanitiseData($data[1]);
                    $first_name = sanitiseData($data[2]);

                    //Use data to insert into db  
                    $sql = mysql_query("INSERT INTO csv_employee_personal (id,works_id,title,first_name) VALUES ('','$works_id','$title','$first_name')");
                }
        }  

        //delete csv file  
        unlink($file_path);  

1 个答案:

答案 0 :(得分:1)

我认为这就是你的数据的样子 “data”,“data2”,“data3,and more more”,“data4”

我的正则表达式非常糟糕,但我认为这将是您最好的解决方案。

同时你可以递归地逐行浏览一行中的每个字符并跟踪逗号和字段分隔符,当你意识到你正在查看一个没有关闭的逗号时,你可以逃脱它。

如果我给出的示例数据与您的数据匹配,请在为函数编写函数时给我一些时间来转义逗号