Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
csv不会忽略“,”(逗号)并使用php生成新行_Php_Mysql_Sql_Csv_Export - Fatal编程技术网

csv不会忽略“,”(逗号)并使用php生成新行

csv不会忽略“,”(逗号)并使用php生成新行,php,mysql,sql,csv,export,Php,Mysql,Sql,Csv,Export,我正在使用php从数据库下载一个表,并将其保存为.csv文件。但当其中一列的字符串中包含逗号“,”时,脚本会将逗号后的字符串的其余部分转移到新列。如何使脚本忽略该逗号 我试过在它旁边加一个“\”或者用条纹睫毛,但都没用 部分守则 编辑: 如果我不使用逗号,csv文件将无法在excel中逐列、逐行正确加载 在任何人开始说你为什么这么做,我这么做是为了练习之前 将$field\u名称放在引号中,以便将其视为一个字符串,就可以了 if (preg_match('/\\r|\\n|,|"/', $fie

我正在使用php从数据库下载一个表,并将其保存为.csv文件。但当其中一列的字符串中包含逗号“,”时,脚本会将逗号后的字符串的其余部分转移到新列。如何使脚本忽略该逗号

我试过在它旁边加一个“\”或者用条纹睫毛,但都没用

部分守则

编辑:

如果我不使用逗号,csv文件将无法在excel中逐列、逐行正确加载


在任何人开始说你为什么这么做,我这么做是为了练习之前

将$field\u名称放在引号中,以便将其视为一个字符串,就可以了

if (preg_match('/\\r|\\n|,|"/', $field_name))
                {
                $field_name = '"'.$field_name.'"';
            //field_name = '' . str_replace(',','.', $field_name) . '';
            }

由于您正在练习,以下是csv的一些基本规则让我们假设逗号作为分隔符:

123,test,456
当字段包含分隔符时,该字段必须用双引号括起来:

123,"monitor, Samsung","45,8"
123,"monitor 24"", Samsung","test multiline 
field","45,8"
换句话说,如果一个字段用双引号括起来,这并不意味着它是一个字符串,只意味着该字段中存在或可能存在分隔符

当引用字段也包含引号时,必须使用另一个引号转义:

123,"monitor 24"", Samsung","45,8"
当您自己进行解析时,记住这一点很重要。实际上,一旦开始使用双引号,所有包含双引号的字段也应该被引用,即使里面没有分隔符

多行字段也必须使用双引号:

123,"monitor, Samsung","45,8"
123,"monitor 24"", Samsung","test multiline 
field","45,8"

上面实际上是一行。

为什么要编写自己的CSV解析器?改用。该页面上的第一条评论是关于将其写入浏览器。这将创建一个格式正确的CSV字符串!实践呵呵。好吧,我给你。然后,如果该值包含逗号,请在该值周围加引号。这将告诉任何CSV解析器,在到达下一个引号之前,不应拆分其中的字符串。有什么提示吗?如果我在str_replace->中加上引号,它将不会打印表的其余部分@aynberDon不必担心str_replace。相反,只需添加引号:$field_name='.$field_name'.';