私は、文字の複数の隣接した出現をその文字の1つの出現だけで置き換えるPHPコードを考え出しています。同じ文字の2つ以上の発生を別の文字に置き換えるにはどうすればよいですか?
例:
my-string--is---dashed
になるはずです:正規表現で
my-string-is-dashed
私は、文字の複数の隣接した出現をその文字の1つの出現だけで置き換えるPHPコードを考え出しています。同じ文字の2つ以上の発生を別の文字に置き換えるにはどうすればよいですか?
例:
my-string--is---dashed
になるはずです:正規表現で
my-string-is-dashed
:
:
var_dump(preg_replace('/-{2,}/', '-', 'my-string--is---dashed')); // string(19) "my-string-is-dashed"
あなたが任意の繰り返し文字を意味している場合、それはもう少し複雑だ。
\\1
は、基本的に一致する文字((.)
と一致)です。最も簡単な解決策は置き換える正規表現を使用することです
$new_string = preg_replace('/-{2,}/', '-', $string);
はこれを試してみてください。実際には
$output = preg_replace('/-+/', '-', $input);
、空虚な置き換えを制限するには、次のように行くことを選択するかもしれません:
$output = preg_replace('/-{2,}/', '-', $input);
str_replace("--", "-", $mystring);
それはあまりにも動作します。しかしこれは、** 1 **以上** ** 2以上**( '+'の代わりに '{2、}')に置き換わります。 – netcoder
明確にするために、netcoderは自分のコードの最初の行を参照しています(編集前、2行目を導入しています)。それにもかかわらず、私が理解しているように、 'preg_replace'は動作しますが、' preg_replace'は新しい文字列をインスタンス化し、元の文字列か置換文字列から文字を取り出すので、意味のあるパフォーマンスの違いはありません。 –