2011-12-10 8 views
2

私は正規表現にマッチ置き換えるためにpreg_replaceメソッドを使用してみましたが、私はエラーメッセージは、PHPは正規表現

取得していますマッチング文字置き換える

を「警告::にpreg_replace()いいえ終了区切り文字 『_』になっています」
$oldString = ""; 
$newString = preg_replace("/[^a-z0-9_]/ig", "", $oldString); 

ここでは、アルファベット、数字、アンダースコア以外のすべての文字を削除しようとしています。

答えて

1

gはPHPではサポートされていません。g(グローバル)修飾子を削除します。ここ
preg_replaceには修飾子gが存在しないすべてのlist of supported modifier

1

私はphpがあなたの後ろ/の後のコントロールgのcharを好まないと思います。私はこれにも問題を抱えていて、gを取り除くことが助けになるようです。 preg_replaceには、検索を制限したい回数を制御する文字列の後ろに続くオプションのパラメータがあります。デフォルトではグローバルです。

The manualは、4番目のパラメータ(制限値)で制限を設定し、必要であれば5番目のカウントパラメータを渡すことができます。これにより、一致した回数がわかります。

私のお金のために、これはPHPが1/2の権利を行うという別のものです。しかし、それはここにもそこにはありません:)

ああ、スタックにようこそ! :)

+0

私は問題が '' 'g''だと思います。いずれにしても、 '' [^ a-z0-9_] ''は無感応のフラグで '' '[^ A-Za-z0-9_]' ''と同じです。 – FakeRainBrigand

0

ファーストです。

第2に、1つ以上の文字を置き換えるために、文字クラスの後に乗数を入れてみてください。

0

RegEx \Wは、英数字以外のアンダースコアを意味します。スペースで置き換えられることに注意してください。

$oldString = "This, is not _all_ alpha-numeric"; 
$newString = preg_replace("/\W+/", "", $oldString); 
# Gives "Thisisnot_all_alphanumeric" 

$newString = preg_replace("/[^\w ]+/", "", $oldString); 
# Gives "This is not _all_ alphanumeric"