preg_replace不适用于手机号码格式

时间:2018-05-16 11:05:47

标签: php regex preg-replace

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

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

但它正在返回9710521666038

预期输出为971521666038

3 个答案:

答案 0 :(得分:2)

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

$mobileNo    = '9710521666038';

Preg_match("/^(971)0*(\d+)/", $mobileNo, $match);

Echo implode("", array_slice($match,1));

https://3v4l.org/5AmCR

答案 1 :(得分:1)

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

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

输出:

971521666038

答案 2 :(得分:1)

您无需捕捉任何内容:

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

Live demo