2011-06-15 92 views
2

我正在嘗試編寫一個函數,它將從在地球某處有效的字符串中提取有效的電話號碼。這是一個真正的國際性網站,適用於遍佈全球的地點以及每個地點的用戶訪問該地點的組織。識別PHP中字符串中的國際電話號碼

我主要需要這個數據庫遷移。我正在遷移的以前的網站只使用了一個簡單的文本字段,沒有指示,也沒有過濾。因此,這導致手機領域被用於各種創造性的方式。

我正在尋找它只是爲了確定字符串中的第一個電話號碼,然後可能會刪除任何過多的字符,然後將結果設置爲用戶配置文件信息。

回答

2

你可以使用這樣的事情:

$pattern = '/([\+_\-\(\)a-z ]+)/'; 

$pattern = '/([^0-9]+)/i'; 

$phone = preg_replace($pattern,'', $phone); 

,或者使用PHP的過濾器,如:

$phone = (int) filter_var($phone, FILTER_SANITIZE_NUMBER_INT); 

雖然與過濾器,你將需要小心如果您允許值以「0」開頭。

然後,無論哪種方式,檢查允許的電話號碼範圍〜6-12或任何您的範圍涵蓋。

+0

我已將這兩個添加到我用於檢測數字的模式列表中。我只是想我會通過一個列表,直到它找到一個匹配,然後返回匹配。謝啦! – pthurmond 2011-06-16 15:40:39

0

首先,您需要編譯一個有效的電話號碼格式列表。

其次,您將需要創建正則表達式來識別每種格式。

第三,您將針對文本運行正則表達式來查找數字。

5

有一個PHP端口可用Google's Phone Number Library

+0

我不知道這個圖書館甚至以任何形式存在。好兄弟! – pthurmond 2011-06-16 15:38:12

+1

不幸的是,它只是PHP端口的開始https://github.com/damncabbage/libphonenumber-php 沒有完成=(... – codercake 2011-07-21 17:31:55