php - 在PHP中用单个逗号删除多个逗号

标签 php regex preg-replace

想用一个逗号删除多个逗号 [带或不带空格]。尝试了这个正则表达式,但失败了 preg_replace("/\s{1,5},\s{1,5}+/", ", ", $string);
尝试了其他解决方案,但找不到任何空格也存在逗号的解决方案。

示例输入

GUWAHATI, TEZPUR, , BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH ,   
GUWAHATI, TEZPUR ,   , BAMUNI HILLS,, MAHABHAIRAB TEMPLE, AGNIGARH,  
GUWAHATI, , TEZPUR, , BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH 

预期输出

GUWAHATI, TEZPUR, BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH

最佳答案

你可以使用这个解决方案:

$s = preg_replace('/^[,\h]+|\h*(,)(?:\h*,)+\h*|[,\h]+$/m', '$1 ', $s);

RegEx Demo

分割:

  • ^[,\h]+:匹配开始后的1+个逗号或空格
  • |:或者
  • \h*(,)(?:\h*,)+\h*:匹配 2 个或多个由空格分隔的逗号可选。请注意,我们匹配捕获组中的单个逗号
  • |:或者
  • [,\h]+$:匹配结束前的1+个逗号或空格
  • '$1 ':替换为将捕获的逗号值后跟一个空格

关于php - 在PHP中用单个逗号删除多个逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74203721/

相关文章:

php - 将 php 处理程序附加到 MySQL 的正确语法是什么?

java - 删除最后括号中的所有内容

javascript - 正则表达式替换 JS 文件中的部分字符串

php - 如何从 PHP 中的用户输入中删除 URL 协议(protocol)和斜杠

php - 创建订阅功能(链接多个表?)?

php - 登录系统只接受访问数据库中的第一项

c# - 处理未知数量的捕获组时仅替换一组

python - 可被 3 整除的正则表达式过滤器编号

php - 使用preg_replace检测电话号码的一些细节

php - 如何像include in php一样包含html文件?