2012-05-09 21 views
2

私は正規表現についてかなり初心者です。私は2つ以上のコンマを1つに置き換え、最後のカンマを削除しようとしています。PHPの正規表現2つの異なるパターンと2つの異なる置換

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

私の疑問は、1行の正規表現でこれを行う方法はありますか?

+0

あなたはそれが唯一のコンマだ場合、最後のコンマを削除しますか? – slowpoison

答えて

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); 
+0

これは文字列の最後の文字の場合に限り、最後のカンマを置き換えませんか? – slowpoison

+0

@slowpoison:そうです、答えを編集します。 –

+0

答えと良い説明に感謝します。すぐに受け入れるつもりです(時間制限)。 – Malixxl

0

いいえ、置き換えが異なり、2つのカンマが文字列の最後にある場合とない場合があります。私は第二のパターンを変更

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

注:あなたがそのような操作を行うことができるようにpreg_replace()は、パターンや交換の配列を受け取り、言っ

。 希望に役立ちます。

関連する問題