2011-05-18 162 views
5

如何在字符串中添加字符?PHP - 在字符串中間添加字符(從結尾開始)

我想格式化一個美國數字,如2121231234成一個破折號如下:212-123-1234。

我不知道提前了一串數字多久會,
它可能是12121231234,它甚至可能是0012121231234,
在這種情況下,我希望它變成1212-123-1234,和001212-123-1234。

到目前爲止,這是我想出來的:

$phone_number = '2121231234'; 
$phone_number = str_split($phone_number); // [2,1,2,1,2,3,1,2,3,4] 
$phone_number = array_reverse($phone_number); // [4,3,2,1,3,2,1,2,1,2] 

array_splice($phone_number, 4, 0, '-'); // [4,3,2,1,-,3,2,1,2,1,2] 
array_splice($phone_number, 8, 0, '-'); // [4,3,2,1,-,3,2,1,-,2,1,2] 

$phone_number = array_reverse($phone_number); // [2,1,2,-,1,2,3,-,1,2,3,4] 
$phone_number = implode($phone_number); // "212-123-1234" 

其中一期工程,但似乎是太多來完成這樣一個簡單的任務。

我錯過了什麼?

回答

7

regular expressions試試:

echo preg_replace('/^(.*?)(.{3})(.{4})$/', '$1-$2-$3', $telnum); 
+0

大,最優雅的解決方案。 – 2013-08-01 11:24:48

0

像這樣

$phone_number = substr_replace($phone_number, '-' , strlen($phone_number)-7 , 0); 
$phone_number = substr_replace($phone_number, '-' , strlen($phone_number)-4 , 0); 
2

試試吧

$phone_number = "2121231234"; 
$phone_number = substr($phone_number, 0, 3) . '-' . substr($phone_number, 3, 6) . ' - '. 
substr($phone_number, 6, strlen($phone_number)); 
相關問題