PHP正则表达式2不同的模式和2个不同的替换

时间:2012-05-09 05:59:43

标签: php regex

我是关于正则表达式的新手我试图将2个或更多逗号替换为1并删除最后一个逗号。

    $string1=  preg_replace('(,,+)', ',', $string1);
    $string1= preg_replace('/,([^,]*)$/', '', $string1);

我的问题是:有没有办法用一行正则表达式做到这一点?

2 个答案:

答案 0 :(得分:5)

是的,当然有可能:

$result = preg_replace(
    '/(?<=,)   # Assert that the previous character is a comma
    ,+         # then match one or more commas
    |          # or
    ,          # Match a comma
    (?=[^,]*$) # if nothing but non-commas follow till the end of the string
    /x', 
    '', $subject);

答案 1 :(得分:0)

不,这是不可能的,因为替换是不同的,并且两个逗号可能或可能不在字符串的末尾。

尽管如此,preg_replace()接受了一系列模式和替换,所以你可以这样做:

preg_replace(array('/,,+/', '/,$/'), array(',', ''), $string1);

请注意,我修改了第二个模式。 希望有所帮助。