preg_replace不适用于手机号码格式



>我有一个简单的脚本来格式化号码(在拨号代码后删除0(

$dialingCode = '971';
$mobileNo    = '9710521666038';
// Remove 0 after dialingCode
echo preg_replace('/^(' . $dialingCode .')(.*?)/', $dialingCode . "$2", $mobileNo);

但它正在返回9710521666038.

预期输出为971521666038

您不需要捕获任何内容:

preg_replace('/^' . $dialingCode . 'K0*/', '', $mobileNo);

现场演示

您可以使用preg_match并使用0*来匹配零个或多个零。
然后内爆两个捕获以获取电话号码。

$mobileNo    = '9710521666038';
Preg_match("/^(971)0*(d+)/", $mobileNo, $match);
Echo implode("", array_slice($match,1));

https://3v4l.org/5AmCR

可以在捕获组之外使用0?

$dialingCode = '971';
$mobileNo    = '9710521666038';
// Remove 0 after dialingCode
echo preg_replace('/^(971)0?(.*?)/', '971' . "$2", $mobileNo);

输出:

971521666038

最新更新