2011-07-07 51 views
97

文字列からすべてを削除しようとしていますが、数値(0-9)だけを削除しようとしています。私はこれが働くだろうと思った 数値以外のすべてを削除するPHPコード

...

echo preg_replace("[^0-9]","",'604-619-5135'); 

しかしエコー "604-619-5135"。私は何が欠けているのですか?

答えて

196

これを試してみてください:

preg_replace('/[^0-9]/', '', '604-619-5135'); 

にpreg_replaceは、一般的に開始し、/で終わるPCREsを使用しています。

+0

内部/二重引用符はPCRE thoとは関係ありません。どうやら( '?(flags?)'の前日に)関数/ APIを設計/作成した人は、余分な関数パラメータを使う代わりに、正規表現のフラグを二重引用符で '/ flags'形式で渡すことを考えました。 – Qtax

+5

@Qtax:良い点ですね。「grep」という単語が(「g/re/p」)から得られるところです。 –

9

パターンを区切り文字で囲む必要があります。通常、スラッシュ(/)が使用されます。これを試してみてください:

echo preg_replace("/[^0-9]/","",'604-619-5135'); 
+1

[区切り文字は英数字以外の非バックスラッシュで空白文字ではありません。 (http://php.net/manual/en/regexp.reference.delimiters.php) –

83

これは、将来の開発者のためのものです、あなたもこれを試すことができます。シンプルすぎる

echo preg_replace('/\D/', '', '604-619-5135'); 
+2

は、数字が開始時に+になっても機能しません。 – mi3afzal

+5

こんにちは、私は将来の開発者です。これは確かに私たちのニーズにうまく役立っています。ありがとうございました。 – zesda

関連する問題