アルファベットの文字、ドット(。)、カンマのみを含むように文字列を変更する必要があります。 (。)文字列はAZ、AZ、0-9、ドット以外の文字が含まれている場合 、それらはカンマ記号に置き換える必要があり、私はこれを使用しています:正規表現(php) - 英数字以外の文字のブロックと一致する
$string = "dycloro 987 stackOVERflow !|,!!friday";
$newstring = preg_replace('/[^a-zA-Z0-9\.]/', ',', $string);
この戻り、
をdycloro、987、StackOverflowの,,,,,,金曜日
しかし、私は代わりに以下を得るために必要としてです。
dycloro、987、StackOverflowの、金曜日
(注意 "|!、!!" $文字列内の部分が単一のコンマ記号に置き換えられます)。 理想的には、許可されていない文字のブロックを1つのコンマ記号で置き換えたいとします。 $newstring = preg_replace('/,{2,}/', ',', $newstring);
は、複数のカンマ記号を1つのカンマで置き換えていることが分かりました。しかし、もっと速く、より良い方法でこれを行う方法はありますか? 1つの正規表現の一致でこれを行うにはどうすればよいですか? と処理時間やメモリの違いはありますか?これは正規表現が数MBのユーザー入力に対して実行されるため、私はそれについても興味があります。
ありがとうございました!
は、あなたがしようとしているお試しください: '$をnewstring =にpreg_replace( '/ [^-ZA-Z0-9 \] + /'、 ''、$文字列); ' – piotrekkr
ruakhが正しいです。 RTFM! – Benubird