【问题标题】:Remove multiple commas regex删除多个逗号正则表达式
【发布时间】:2013-01-19 19:22:18
【问题描述】:

谁能告诉我,如果多个逗号在 PHP 中彼此相邻,我将如何删除它们。

$address= rtrim(preg_replace('!\s+!', ' ', $address_line_1.' '.$address_line_2.', '.$town_village_city.', '.$state_province_county.', '.$postal_code.', '.$country),',');
//return  preg_replace('/([!?,.])+/',' ',$address);
return  preg_replace('!\,+!',' ',$address);

例如,我可能有一个没有 town_village 的地址,所以以多个逗号结尾。

还有测试 PHP 正则表达式的好资源吗?

【问题讨论】:

  • 由于您可以得到多个逗号空格组合,因此您需要用逗号替换任何“逗号(可选空格逗号)”序列。在 Perl 中,您可以编写 s/,(\s*,)+/,/g(或者,更复杂但具有相同整体效果的 s/,(?:\s*,)+/,/g,使用非捕获括号)。 PHP 的音译可能是:preg_replace(',( *,)+', ',', $address),但我不确定。

标签: php regex


【解决方案1】:

假设这些逗号之间没有空格,您可以简单地将多个逗号替换为一个逗号:

$cleadAddress = preg_replace('/,+/', ',', $address);

虽然您用逗号 (!) 替换每个逗号,但您也替换了多个逗号。如果更复杂的正则表达式值得努力节省一些执行时间,这取决于您的确切数据。

【讨论】:

  • 对于同样的挑战,Regex 有什么建议吗?
【解决方案2】:

这可能是一个合适的正则表达式,但这是我的工作 -

$cleanedAddress = str_replace(',',', ',preg_replace('/,+/', ',', $address));

使$address只是逗号分隔,运行preg_replace删除多个逗号,然后使用str_replace将逗号变成逗号空格!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 2017-04-07
    • 1970-01-01
    • 2022-01-13
    • 2018-10-29
    相关资源
    最近更新 更多