2012-02-17 27 views
3

電話番号入力フィールドを持っていますので、ユーザーは任意の形式で電話番号を追加できます(555-555-5555、(555)555 - 5555 、など)。電話番号入力フィールド(PHP)から番号を抽出

電話番号フィールドだけなので、フィールド内の数字以外はすべて無視できます。

私は現在次のコードを使用しています。 それはすべての数字を抽出しますが、問題はそれらが順不同であるということです - それは混乱した順序です。

元の文字列に表示される順序で数字を抽出するにはどうすればよいですか?

preg_match_all('/\d+/', $Phone, $matches); 

$Phone = implode('', $matches[0]); 

編集:彼らは、この関数からごちゃ混ぜために実際にはない - 私は相互に重なったりを生じINT(10)データベースフィールドに数字を挿入しました。しかし、以下の答えはまだ私の目標を達成するためのより効率的な方法です。

答えて

4

使用preg_replace以外の数字を削除するには:

$numbers = preg_replace('/[^\d]/','',$Phone); 
2
$Phone = preg_replace('/[^\d]/', '', $Phone); 
2

理由だけではなく、数字ではない文字列内のすべてのものを交換しませんか?

$number = preg_replace("/[^0-9]/", '', $Phone); 
+0

^\ dとyo ur '^ 0-9'? –

+1

なし\ dは文字クラス[0-9]と同じエスケープシーケンスです。いくつかのエスケープシーケンスはロケールの設定に依存しますが、\ dは信じられません。 http://www.php.net/manual/en/regexp.reference.escape.phpを参照してください。 –

0

試してみてくださいそれ

if (!preg_match("/^[0-9\-]*$/",$Phone)) { 
    echo "Only Numeric and strip (-)"; 
} 

例:

グッド:0877-9320-9356

が失敗しました:0877 9320 9356または087793209356

`使用して、他の例との違いは何