Php CSV文件中的转义逗号

Php CSV文件中的转义逗号,php,csv,Php,Csv,我正在尝试添加一种功能,允许wvb应用程序的用户使用CSV文件批量上传数据——除了数据在实际字段中包含逗号之外,一切都很好 有很多关于这方面的帖子,我读过很多解决方法,主要是用双引号括住逗号,但我不知道如何在我的代码中做到这一点 最终,我不能依靠用户在输入时为我做这件事,所以我需要在上传过程中在它进入数据库之前做这件事——我尝试使用tab作为替代分隔符,但Excel在处理tab分隔时似乎非常不一致,所以我排除了这一点 (sanitiseData是我在整个站点中用于清理所有用户输入数据的功能) 我

我正在尝试添加一种功能,允许wvb应用程序的用户使用CSV文件批量上传数据——除了数据在实际字段中包含逗号之外,一切都很好

有很多关于这方面的帖子,我读过很多解决方法,主要是用双引号括住逗号,但我不知道如何在我的代码中做到这一点

最终,我不能依靠用户在输入时为我做这件事,所以我需要在上传过程中在它进入数据库之前做这件事——我尝试使用tab作为替代分隔符,但Excel在处理tab分隔时似乎非常不一致,所以我排除了这一点

(sanitiseData是我在整个站点中用于清理所有用户输入数据的功能)


我想这就是你的数据 “数据”、“数据2”、“数据3及其他”、“数据4”

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

同时,您可以递归地遍历一行中的每个字符,并跟踪逗号和字段分隔符,当您意识到您看到的逗号后面没有结束符时,您可以对其进行转义


如果我给你的示例数据与你的数据相匹配,请给我几分钟时间,让我为你编写一个函数,以避开逗号

你是如何创建CSV文件的?请使用等。不要使用
mysql…
。如果你有逗号分隔的值,其中包含未替换的逗号,则数据无效。任何解析它的尝试充其量都是一个幸运的猜测。需要你的帮助用户提交有效数据。该文件是由用户手动创建的-我不能强迫他们做任何事情,因此我需要尝试并阻止它。我目前的想法是告诉用户他们不能使用逗号,然后作为备用,删除所有逗号并简单地用空格替换?除非将字段用双引号括起来,如“123”,否则不可能鲍勃先生“简单地说,当数据提供给应用程序时,数据看起来像123,Mr,Bob-问题是,如果上面的数据是123,Mr,B,oboh,对不起,先生,不确定如何区分Bob名称中的逗号和分隔字段的实际逗号。这可能是个错误的建议,但额外的逗号是否总是在名称中?如果第一列始终为id,第二列为2-3个字母的标题缩写,然后你可以做一个字符串替换超过该点不幸的是没有-不应该有任何逗号,但我需要防止有人意外或故意上传一个带有逗号的csv在其中一个字段上检查该行上是否有超过3个逗号,记下它不要插入并移到下一行,在脚本结束时,在文本框中用错误的行提示用户修复问题,并提交对虚线的新更改
        $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);