php - 如何在 PHP 中删除双引号之间的逗号

标签 php regex quotes double-quotes

希望这是一个简单的过程。我有一个包含 CSV 文件输出的行的数组。我需要做的只是删除出现在双引号之间的所有逗号。

我在正则表达式中结结巴巴,遇到了麻烦。这是我看起来很悲伤的代码:

<?php    

$csv_input = '"herp","derp","hey, get rid of these commas, man",1234';

$pattern = '(?<=\")/\,/(?=\")'; //this doesn't work

$revised_input = preg_replace ( $pattern , '' , $csv_input);

echo $revised_input;

//would like revised input to echo: "herp","derp,"hey get rid of these commas man",1234

?>

非常感谢大家。

最佳答案

原始答案

您可以使用 str_getcsv()为此,因为它是专门为处理 CSV 字符串而设计的:

$out = array();
$array = str_getcsv($csv_input);
foreach($array as $item) {
    $out[] = str_replace(',', '', $item);
}

$out 现在是一个没有任何逗号的元素数组,您可以将其内爆,因为删除逗号后将不再需要引号:

$revised_input = implode(',', $out);

评论更新

如果引用对您很重要,那么您可以像这样将它们添加回去:

$revised_input = '"' . implode('","', $out) . '"';

另一种选择是使用网上流传的 str_putcsv()(不是标准的 PHP 函数)实现,例如 this one .

关于php - 如何在 PHP 中删除双引号之间的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10739016/

相关文章:

php - WordPress 中的多词搜索不显示搜索结果

php - 将包含 mysql 函数的 mysql 查询传递给 PHP mysql_query

mysql - MySQL 中何时使用单引号、双引号和反引号

c++ - 在 C++ 中使用特殊格式将字符串拆分为字符串

php - 如何从 POP3 电子邮件中提取数据?

regex - 如何在 Perl 中找到与正则表达式的所有匹配项?

正则表达式:如何 "step back"

ruby - 如何捕获正则表达式中某个单词之前的几个单词

regex - Linux 中的 grep 命令使用“在正则表达式中

php - 使用 apache 和 nginx 反向代理安装 php-fpm 后 503 服务不可用