向电话号码添加自定义掩码

问题描述 投票:0回答:1

所以我正在创建一个简单的函数来屏蔽电话号码。我的电话号码有9位数字,我希望preg_replace使用给定的掩码,例如2-2-2-1-23-2-2-2等。

我尝试过:

$mask = explode('-', '3-2-2-2');

$pattern = '';
$replace = '';

foreach ($mask as $key => $value) {
    if ($key == 0) {
        $pattern = '/\(?(\d{' . $value . '})\)?[- ]';
        $replace = '$' . ++$key . '-';
        continue;
    }

    if ($key == count($mask) - 1) {
        $pattern .= '?(\d{' . $value . '})/';
        $replace .= '$' . ++$key;
        break;
    }

    $pattern .= '?(\d{' . $value . '})[- ]';
    $replace .= '$' . ++$key . '-';
}


return preg_replace($pattern, $replace, '902000810');

结果为902-00-08-10。有时会出现错误preg_replace(): No ending delimiter '/' found。我该如何重构它而不出现错误?

php regex preg-replace
1个回答
0
投票

preg_replace(): No ending delimiter '/' found表示您的模式不会以/作为最后一个字符结尾。

© www.soinside.com 2019 - 2024. All rights reserved.