2012-02-17 274 views
3

我有一個電話號碼輸入欄,它允許用戶以他們想要的任何格式添加電話號碼(555-555-5555,(555)555-5555等)。從電話號碼輸入欄(PHP)提取號碼

由於它只是一個電話號碼字段,我可以忽略所有字段中的數字。

我正在使用下面的代碼。 它提取所有的數字,但問題是它們不是爲了 - 它是混亂的順序。

如何提取數字按原始字符串顯示的順序?

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

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

編輯:他們實際上不是在這個函數一個混亂的秩序 - 我將號碼爲INT(10)數據庫字段,這引起了混雜。但是,下面的答案仍然是實現我的目標的更有效的方式。

回答

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

爲什麼不更換,是不是一個數字字符串中的一切嗎?

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

有什麼用'其他的例子之間的區別^ \ d'和喲你'^ 0-9'? – 2012-02-17 19:02:46

+1

無。 \ d只是一個與字符類[0-9]相同的轉義序列。某些轉義序列依賴於區域設置,但我不相信\ d是。見http://www.php.net/manual/en/regexp.reference.escape.php – 2012-02-17 19:04:56

0

試試吧

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

例子:

好:0877-9320-9356

失敗:0877 9320 9356087793209356