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

Vin*_*ney 6 php regex

我会得到一个国家代码$countryCode和一个电话号码$phone_no。电话号码开头会有国家/地区代码,因此我必须从 中删除国家/地区代码$phone_no并获得不附加任何代码的普通电话号码。

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

$country_code = '62';
$phone_no = '+62509758151';
// need to  get 509758151
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

更不用说它也会在诸如 +62629758151 之类的琐碎情况下失败

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

spl*_*h58 6

使用符号 + 和国家/地区代码更改字符串的开头

$result = preg_replace("/^\+?{$country_code}/", '',$phone_no);
Run Code Online (Sandbox Code Playgroud)

演示