如果存在,则删除双引号之间的第一个逗号

Posted

技术标签:

【中文标题】如果存在,则删除双引号之间的第一个逗号【英文标题】:remove 1st comma if exist, between double quotes 【发布时间】:2017-01-05 21:35:36 【问题描述】:

我有一个类似于

的字符串
'"This is string, some other text",,and more, and more'

我只想删除双引号之间存在的逗号,原因是我正在从这个字符串创建 csv 文件并在导出之前去掉引号。但由于双引号中的逗号 csv 没有正确生成

编辑:

正确的解决方案是使用strpos 表示双引号,然后删除引号左侧的逗号(在某些情况下,只有一个双引号,即英寸)

【问题讨论】:

那么您没有正确生成 csv。你在用fputcsv()吗?您可以在其中指定引号字符,这会使 php 转义“额外”逗号... 使用回调 preg_replace_callback 和 '~"[^"]+"~',然后去掉回调中的所有逗号,返回字符串。 @MarcB 是的,我正在使用fputcsv(),但我从 api 获得了一个 csv,我必须先对其进行解析并使其正确,然后我使用 php 函数创建另一个 csv。所以有一些限制 【参考方案1】:

您可以使用preg_replace_callback PHP 函数来匹配双引号子字符串(如果您的输入中没有转义序列!)并替换匿名函数内双引号内的逗号:

$s = '"This is string, some other text",,and more, and more';
echo preg_replace_callback('~"[^"]+"~', function ($m) 
    return str_replace(',', '', $m[0]);
, $s);

见this PHP demo。

如果您的输入中有转义序列,则需要一个解析器。

【讨论】:

以上是关于如果存在,则删除双引号之间的第一个逗号的主要内容,如果未能解决你的问题,请参考以下文章

删除 CSV 文件中双引号之间的逗号

csv文件

从 .CSV 文件的数值中删除双引号和逗号

Pig CSVExcelStorage 双引号逗号

在 CSV UNIX 中删除双引号之间的 \n

我如何获得第一个双引号中的值?