首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >南非移动电话号码格式化

南非移动电话号码格式化
EN

Stack Overflow用户
提问于 2011-01-16 22:51:56
回答 2查看 1.8K关注 0票数 4

我仍然在努力理解PHP语言中的preg_replace函数。如何将以下手机号码格式化为标准的27xxxxxxxx手机号码?

例如:

083-1234678应为27831234567 +278312345678应为27831234567

起始数字必须为081,082,083,084或071,072,073,074

EN

回答 2

Stack Overflow用户

发布于 2014-07-16 18:43:08

代码语言:javascript
复制
    function Number_SA($numbers)
{
$number = preg_replace(array('~[^0-9]~', '~^27~'), '', $numbers);

    if (preg_match('~^(?:07[1234])~', $number) > 0)
    {
        $output= sprintf('%d%s', 27, $number);if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
         else{return $output;}

    }
    elseif (preg_match('~^(?:08[123458])~', $number) > 0)
    {
        $output= sprintf('%d%s', 27, $number);if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
         else{return $output;}

    }
    elseif (preg_match('~^(?:01[123468])~', $number) > 0)
    {
        $output= sprintf('%d%s', 27, $number);
        if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
         else{return $output;}

    }
    elseif (preg_match('~^(?:02[1])~', $number) > 0)
    {
        $output= sprintf('%d%s', 27, $number);

         if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
         else{return $output;}

    }       
    elseif (preg_match('~^(?:03[1])~', $number) > 0)
    {
        $output= sprintf('%d%s', 27, $number);
        if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
         else{return $output;}

    }  
    elseif (preg_match('~^(?:04[0134])~', $number) > 0)
    {
        $output= sprintf('%d%s', 27, $number);
        if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
         else{return $output;}

    }  
    elseif (preg_match('~^(?:05[17])~', $number) > 0)
    {
        $output= sprintf('%d%s', 27, $number);
        if ((strlen($output) < 12)| (strlen($output) > 13)){ return false;}
        else{return $output;}

    }  
    else{return false;}

return false;
}


$phoneno=array();
array_push($phoneno,(Number_SA('083-313-2605'))); //true
array_push($phoneno,(Number_SA('067-313-26055')));//false
array_push($phoneno,(Number_SA('021-313-260'))); //false
array_push($phoneno,(Number_SA('0211-313-8903')));//true



foreach ($phoneno as $number){
if($number == ""){ echo "Phone Number is null"."<br/>";}
else{ echo "This is valid: ".$number."<br/>";}}
票数 2
EN

Stack Overflow用户

发布于 2011-01-16 23:23:42

这应该可以做到:

代码语言:javascript
复制
function Number_SA($number)
{
    $number = preg_replace(array('~[^0-9]~', '~^27~'), '', $number);

    if (preg_match('~^(?:07[1234]|08[1234])~', $number) > 0)
    {
        return sprintf('%d%s', 27, $number);
    }

    return false;
}

用法:

代码语言:javascript
复制
var_dump(Number_SA('083-123-4678'));    // 27831234567
var_dump(Number_SA('085-123-4678'));    // false
var_dump(Number_SA('+278312345678'));   // false (doesn't start with 083)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4705998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档