2012-09-29 39 views
0

我是全新的PHP,所以,如果這是一個簡單的問題,請原諒我,但我無法真正弄清楚如何使用preg_replace從括號中刪除括號在我的電話號碼中輸入區號並在區號和前3個數字之間加上一個短劃線。從電話號碼中刪除括號並使用preg_replace添加短劃線

現在我所有的電話號碼都以這種格式分別存儲在每個人員數組中(索引文件中):(800) 111-1111

我想讓他們像這樣打印出來:800-111-1111我想讓這一切都發生在我的Person類的setphoneNumber函數中。

這裏是代碼如下:

$this-> phoneNumber = $phoneNumber; 
$pattern = ('/\D+/'); 
$replacement = ''; 
if(is_string($phoneNumber)) { 
    return preg_replace($pattern, $replacement, $this -> phoneNumber); 
} else { 
    user_error("Error: Person's phone number must be a string"); 
} 

,我做給它的任何修改或者給我的偏移誤差或沒有結束符錯誤無與倫比的括號(當我設置$pattern(')'發生);

任何幫助將不勝感激。

謝謝大家!

回答

0

如果初始格式始終是相同的,我不會刻意限定用於替換或者圖案

試試這個變量:

preg_replace(array("(",") "),"", $this->phoneNumber); 
+0

出於某種原因,我仍然在取代它後得到無結尾匹配分隔符')'的錯誤。 –

0

如何這樣的事情,布萊恩?

$pattern = array('/\(/', '/\) /'); 
$replacement = array('', '-'); 
if(is_string($phoneNumber)) { 
return preg_replace($pattern, $replacement, $this -> phoneNumber); 
} 

使用期間它不佔人在一個連字號,雖然替代的(如800.111.1111)...但它不會採取了一大堆更使它函數,該函數以及。你只是想削減所有多餘的部分,然後確保你用空格而不是連字符替換第一個句點(區號和下一個數字區段之間),就像你對剩下的時段所做的那樣。

UPDATE:

我沒有測試過這種廣泛的,但這應該對你以後的工作,以及適應使用小數電話號碼格式的人(即800.111.1111)。

$pattern = array('/ /','/[(](.*)[)](.*)(-)(.*)/','/(.*)(\.)(.*)(\.)(.*)/'); 
$replacement = array('','$1-$2-$4','$1-$3-$5'); 
if(is_string($phoneNumber)) { 
return preg_replace($pattern, $replacement, $this -> phoneNumber); 
}