0

我有 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 => “+”是国际代码,“971”是国家代码,“50”是移动网络代码,“1234567”是手机号码。

注意到我们有不止一个移动代码。我需要从号码中保存两部分(移动网络代码,手机号码)的问题例如:+971501234567将保存为(050)移动网络代码和(1234567)手机号码。

谁能帮我实现这一目标?

4

2 回答 2

1

如果它们总是采用 +971501234567 的形式,只需去掉最后 9 个数字。从这些中,将最后七个作为手机号码,在前两个前面加上一个 0 作为移动网络。

于 2012-06-21T20:11:47.527 回答
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);
}

希望帮助某人。

于 2012-06-22T04:19:52.950 回答