从php中的电话号码修剪国家/地区代码

时间:2017-12-27 08:03:28

标签: php regex

我的国家/地区代码为$countryCode,电话号码为$phone_no。电话号码一开始就会有国家/地区代码,因此我必须从$phone_no删除国家/地区代码,并获取普通电话号码而不附加任何代码。

例如,如果国家是印度尼西亚,我会得到:

$country_code = '62';
$phone_no = '+62509758151';
// need to  get 509758151

目前我正在尝试使用正则表达式和修剪函数

$result = ltrim( preg_replace("/[^0-9]+/", "",$phone_no) , $country_code);
// $result is 509758151

在这种情况下适用但在电话号码以国家代码中提到的数字开头时失败。 $phone_no = '+62609758151';

$result = ltrim( preg_replace("/[^0-9]+/", "",$phone_no) , $country_code);
// $result is 09758151 which is incorrect

更不用说它也会因为像+62629758151

这样的琐碎案例而失败

请提出建议。我知道基于字符串的解决方案,如substr()等,但我正在寻找一些基于正则表达式的解决方案

3 个答案:

答案 0 :(得分:3)

使用符号+和国家/地区代码

更改字符串的开头
$result = preg_replace("/^\+?{$country_code}/", '',$phone_no);

demo

答案 1 :(得分:0)

        $mobile='1234567891';Mobile number like this.
        $numberwith_country_code='+911234567891';Mobile with country code like this.


        $mobile                 =   preg_replace('/\s+/', '',$_POST['mobile']);
        $str                    =   strlen($mobile);
        $numberwith_country_code=   preg_replace('/\s+/', '',$_POST['numberwith_country_code']);
        $numberwith_country_code=   substr($numberwith_country_code,0,-$str);   

输出如下: 手机-> 1234567891 numberwith_country_code-> + 91

js插件链接:-https://www.jqueryscript.net/form/jQuery-International-Telephone-Input-With-Flags-Dial-Codes.html

答案 2 :(得分:-1)

如果您只想选择2个前缀数字:

  \+\K\d{2}

如果你想要整个前缀:

  \+\d{2}