数字以外のすべてを削除するPHPコード


135

文字列からすべてを削除しようとしていますが、数字(0-9)のみです。

これはうまくいくと思いました。

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

しかし、それは「604-619-5135」に似ています。何が欠けていますか???

回答:


276

これを試して:

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

preg_replaceはPCREを使用します。PCREは通常、で始まり、で終わり/ます。


内部/二重引用符はPCREとは何の関係もありません。どうやら(以前は(?flags))関数/ APIを設計/作成した人々/flagsは、余分な関数パラメーターを使用する代わりに、二重引用符で囲まれた形式で正規表現フラグを渡すことをお勧めしました。
Qtax 2011

6
@Qtax:良い点、そうだね( "g / re / p")から "grep"という単語が得られるところだ
クリス・エバーレ

109

これは将来の開発者向けです。これも試すことができます。シンプルすぎる

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

41
こんにちは、私は未来の開発者です。これは確かに私たちのニーズを十分に満たしています。ありがとうございました。
zesda 2017

6
私はゼスダよりも未来から来ており、確認することができます。それはまだ助けです
myshadowself

3
私は将来2度戻ってきて、彼らがまだより良い方法を見つけていないことを確認できます。
Eoin

4
私は最も遠い未来からの最後の開発者です。これはもう役に立たないと言って悲しいです。プラスチック製のストローをそれほど多く使用するべきではありませんでした。ここに着くと表示されます。
ジェレミー

2
参考までに:39世紀の今でもこれを使用しています。
user-44651


3

正規表現を使用したくない人のためのはるかに実用的な方法:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

注:電話番号でも機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.