Want to remove multiple commas [with or without spaces] with a single one. Tried this regex however it failed preg_replace("/\s{1,5},\s{1,5}+/", ", ", $string);
Tried other solutions but can't find any solution where space also exists with comma.

Sample input

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

Expected output

GUWAHATI, TEZPUR, BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH

推荐答案

您可以使用trim($string, ', \n\r\t\v\x00')(字符是default trim chars+a逗号)从空格和逗号对$string进行trim,然后使用preg_replace('/\s*(?:,\s*)+/', ', ', ...):

<?php

$string = ", , GUWAHATI, TEZPUR, , BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH ,   ";
echo preg_replace('/\s*(?:,\s*)+/', ', ', trim($string, ", \n\r\t\v\x00"));
// => GUWAHATI, TEZPUR, BAMUNI HILLS, MAHABHAIRAB TEMPLE, AGNIGARH

请看PHP demo

\s*(?:,\s*)+模式匹配零个或多个空格,后跟一个或多个逗号序列以及零个或多个空格.这是regex demo美元.

Php相关问答推荐

Laravel 10查询中的多个where子句

输入手写CSV时在PHP中进行日期判断

显示WooCommerce当前产品类别或标签的短代码

从WooCommerce购物车和 checkout 页面自定义发货标签

使用正则表达式搜索两个子字符串(没有重叠/共享字符)

WHERE方法不能与有效查询Laravel一起使用

在PHP中使用curl命令执行SCRAPYD操作.json不返回任何内容

在php中,方法之间的属性链接是如何工作的

在Laravel中创建辅助函数时的约定

根据WooCommerce中的自定义用户元数据值更改用户角色

可以';exec、system和shell_exec PHP函数中的命令字符串上的字符数不得超过8175

.htaccess 重写规则问题

通过ajax发送数据到下拉列表未完全设置为所选

在 WooCommerce wc_get_products 函数中处理自定义分类法

Laravel Eloquent:复杂的多对多关系以及缺失关系的默认值

如何设置Mailersend PHP API 模板变量?

Woocommerce API 的 PHP Curl 附加参数

在帖子内容中使用短代码触发 Woocommerce 挂钩

从 laravel 中的日期类型中删除时间

Laravel 模型将日期保存为空