2 回答
TA贡献1828条经验 获得超6个赞
假设:
$num = '902000810';
$mask = explode('-', '3-2-2-2');
除了使用正则表达式从掩码格式化电话号码外,还有其他方法。
使用格式化字符串:
$maskPH = array_map(fn($i) => "%{$i}s", $mask);
$formatI = implode('', $maskPH);
$formatO = implode('-', $maskPH);
$result = vsprintf($formatO, sscanf($num, $formatI));
使用unpack:
$format = array_reduce($mask, function ($c, $i) {
static $j = 0;
return "{$c}A{$i}_" . $j++ . "/";
});
$result = implode('-', unpack($format, $num));
TA贡献1810条经验 获得超5个赞
preg_replace(): No ending delimiter '/' found
意味着您的模式不会以 a/
作为最后一个字符终止。
但是这三种模式都缺乏正确的格式:
您应该相应地修改它们。
从:
$pattern = '/\(?(\d{' . $value . '})\)?[- ]';
$pattern .= '?(\d{' . $value . '})/';
$pattern .= '?(\d{' . $value . '})[- ]';
到:
$pattern = '/\(?(\d{' . $value . '})\)?[- ]/';
$pattern .= '/?(\d{' . $value . '})/';
$pattern .= '/?(\d{' . $value . '})[- ]/';
- 2 回答
- 0 关注
- 148 浏览
添加回答
举报