2011-04-29 109 views
1

好了說我已經保存在我的表我的電話號碼爲:拆分沒有分隔符的數據?

「0008675309」

我顯然不希望以顯示它就像這樣,我想,當我把它給格式化如:

(000)867-5309

它會更好將其存儲在一個分隔符,如/數據庫 - 或。以便我可以稍後拆分它?或者是否可以按字符數分割它?

回答

2

這裏是一個班輪,你想要做什麼:

$phone = preg_replace('^(\d{3})(\d{3})(\d{4})$', '($1)$2-$3', $phone); 

作爲一個額外的好處是不會改變格式,如果輸入格式不匹配(國際號碼)。

+1

專業!完美,我需要將它們分成變量。雙重打擊!是否有一個很好的資源可以推薦來了解更多關於\ d和\ w的含義?或者也許要糾正要搜索的術語? – aph107 2011-04-29 18:45:09

+1

我想你的編輯會使這種三重打擊成爲可能。 – aph107 2011-04-29 18:48:07

+1

@luckycypher:http://php.net/manual/en/regexp.reference.escape.php – 2011-04-29 19:06:15

3

以這些格式處理電話號碼的性能成本和代碼很簡單,所以它真的取決於您的偏好。要回答你的問題,很容易抓住前三個字符,接下來的三個字符和最後四個字符,例如使用substr函數。

+0

有道理。我試圖專注於學習最佳實踐,所以你的答案是非常相關的,我想我做它的方式(在這種情況下至少)並不重要。並且謝謝我_will_使用子字符串。 – aph107 2011-04-29 18:22:54

2

如果你只存儲北美電話號碼(10位數字),那麼@mellamokb指出,你可以任意方式。如果您可能正在儲存國際號碼,則應儘早詳細記錄(如果可能),因爲稍後可能很難知道如何標記號碼。

+0

也是有道理的,我現在沒有與國際號碼合作,但是當我這樣做時,我會記住這一點,謝謝。 – aph107 2011-04-29 18:26:23

2

使用使preg_split與PREG_SPLIT_NO_EMPTY

1

其他的答案是完全正確的。如果你想爲它實際的代碼,我覺得有以下應該做的伎倆(索引可以由一個糟糕的吧!):

$phone_number="0008675309" 
$phone_number=substr_replace($phone_number, "(", 0, 0); 
$phone_number=substr_replace($phone_number, ")", 4, 0); 
$phone_number=substr_replace($phone_number, "-", 8, 0);