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