使用php从电话号码中剥离国际电话代码

时间:2012-06-21 20:05:35

标签: php mysql function

我有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)移动电话号码。

是谁能帮助我实现这个目标?。

2 个答案:

答案 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);
}
希望能帮助别人。