如果存在,则删除双引号之间的第一个逗号
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。
如果您的输入中有转义序列,则需要一个解析器。
【讨论】:
以上是关于如果存在,则删除双引号之间的第一个逗号的主要内容,如果未能解决你的问题,请参考以下文章