2010-11-24 8 views

答えて

6

+0

それはあまりにも動作します。しかしこれは、** 1 **以上** ** 2以上**( '+'の代わりに '{2、}')に置き換わります。 – netcoder

+0

明確にするために、netcoderは自分のコードの最初の行を参照しています(編集前、2行目を導入しています)。それにもかかわらず、私が理解しているように、 'preg_replace'は動作しますが、' preg_replace'は新しい文字列をインスタンス化し、元の文字列か置換文字列から文字を取り出すので、意味のあるパフォーマンスの違いはありません。 –

3

var_dump(preg_replace('/-{2,}/', '-', 'my-string--is---dashed')); // string(19) "my-string-is-dashed" 

あなたが任意の繰り返し文字を意味している場合、それはもう少し複雑だ。

\\1は、基本的に一致する文字((.)と一致)です。最も簡単な解決策は置き換える正規表現を使用することです

$new_string = preg_replace('/-{2,}/', '-', $string); 
1

はこれを試してみてください。実際には

$output = preg_replace('/-+/', '-', $input); 

、空虚な置き換えを制限するには、次のように行くことを選択するかもしれません:

$output = preg_replace('/-{2,}/', '-', $input); 
0
str_replace("--", "-", $mystring); 
関連する問題