2013-03-30 50 views
1

我想記錄在數據庫,人的電話號碼。由於人們輸入數據的方式不同(基於地區代碼)等,我希望在輸入到數據庫之前將所輸入的任何內容標準化爲標準方式,然後當我從數據庫中讀取並放入頁面時,像這樣1-954-999-9999這樣的格式我可以附加<a href="tel:1-954-999-9999">1-954-999-9999</a>,可以從網頁應用/或普通網站點擊撥打電話。php清理手機變量

所有這一切說,我有一個問題。

在POST這是它

$compBizNumber = mysqli_real_escape_string($c2d, $_POST['compBizNumber']) ; 
$compBizNumber = str_replace("(", "-", $compBizNumber); 
$compBizNumber = str_replace(")", "-", $compBizNumber); 
$compBizNumber = str_replace(" ", "-", $compBizNumber); 
$compBizNumber = filter_var($compBizNumber,FILTER_SANITIZE_NUMBER_INT) ; 

處理如何IM是有辦法一氣呵成,以取代多個字符?

我該怎麼辦?

謝謝先進。

回答

2

str_replace接受一個數組作爲第一(和第二參數),所以這會做:

$compBizNumber = str_replace(array("(", ")", " "), "-", $compBizNumber); 

然而,更靈活的方式將是使用正則表達式來替換所有非數字字符:

$compBizNumber = preg_replace("/[^0-9]/", "-", $compBizNumber); 

這樣您就不必添加用戶輸入到str_replace中的所有可能的字符。

+1

完美!謝謝 – somdow

+0

@somdow Your're welcome – alexn

1

爲什麼不使用正則表達式,除了號碼全部刪除:

$myNumber = "+31 (0) 43 - 123 345 67"; 
preg_replace("/[^0-9]/","", $myNumber); 

http://codepad.org/30vUqWWC

然而,提防+我想你不得不替換成00,而不是什麼都不要想至使數字有效嗎?不是100%確定的。