我有php mysql应用程序,我想要以特定格式保存电话号码。经过一些谷歌搜索后,我达到了这个功能:
function RemoveExt($phone) {
if(substr($phone,0,1) == '+' || substr($phone, 0,2) == 00){
$phone = preg_replace('/[^\d]/', '', $phone);
}
$phone=trim($phone);
$prefixs=array('0097150','0097156','0097152','0097155', '97150','97156','97155','97152','050','056','055','052','00');
$replace=array('050','056','052','055','050','056','055','052','050','056','055','052','00');
$count = count($prefixs);
for($i = 0; $i < $count; $i++)
{
if(strncmp($phone, $prefixs[$i], strlen($prefixs[$i])) == 0){
$phone = preg_replace('/^'.$prefixs[$i].'/i','',$phone);
$ext=$replace[$i];
return array('phone' => $phone, 'ext' => $ext);
}else{
return array('phone' => $phone, 'ext' => $ext);
}
}
}
例如电话号码+971501234567 =&gt; “+”将是国际代码, “971”将是国家代码, “50”将是移动网络代码和 “1234567”将是手机号码。
注意到我们有多个移动代码。 我需要从号码中保存两部分的问题(移动网络代码,手机号码) 例如:+971501234567将保存为(050)移动网络代码和(1234567)移动电话号码。
是谁能帮助我实现这个目标?。答案 0 :(得分:1)
如果他们总是采取+971501234567的形式,只需砍掉最后9个数字。从这些中,将最后七个作为移动电话号码,在前两个电话号码前加上0作为移动网络。
答案 1 :(得分:0)
我要分享工人阶级: -
function RemoveExt($phone) {
if(substr($phone,0,1) == '+'){
$phone = preg_replace('/[^\d]/', '00', $phone);
}
$prefix=array('0097150','0097156','0097155','0097152','97150','97156','97155','97152','050','056','055','052','00');
$replace=array('050','056','055','052','050','056','055','052','050','056','055','052','00');
$count =count($prefix);
$counter=0;
while( $counter < $count){
if(strncmp($phone, $prefix[$counter] , strlen($prefix[$counter])) == 0){
$phone=substr($phone, strlen($prefix[$counter]));
$ext=$replace[$counter];
}
$counter++;
}
return array('phone' => $phone, 'ext' => $ext);
}
希望能帮助别人。