私はSMSアプリ送信者の電話番号を+11234567890に123-456-7890記録と比較することができるのでMySQL データベース。
数値は、サイト上の他の場所で使用するために後者の形式で保存されますが、大量のコード変更が必要になるため、その形式を変更したくありません。
PHP でこれをどう実行すればよいでしょうか?
ありがとう!
ベストアンサー1
これは、現在のどの回答よりも多くのバージョンの番号で機能する米国の電話フォーマッタです。
$numbers = explode("\n", '(111) 222-3333
((111) 222-3333
1112223333
111 222-3333
111-222-3333
(111)2223333
+11234567890
1-8002353551
123-456-7890 -Hello!
+1 - 1234567890
');
foreach($numbers as $number)
{
print preg_replace('~.*(\d{3})[^\d]{0,7}(\d{3})[^\d]{0,7}(\d{4}).*~', '($1) $2-$3', $number). "\n";
}
正規表現の内訳は次のとおりです。
Cell: +1 999-(555 0001)
.* zero or more of anything "Cell: +1 "
(\d{3}) three digits "999"
[^\d]{0,7} zero or up to 7 of something not a digit "-("
(\d{3}) three digits "555"
[^\d]{0,7} zero or up to 7 of something not a digit " "
(\d{4}) four digits "0001"
.* zero or more of anything ")"
更新日: 2015年3月11日{0,7}
代わりに使用する{,7}