我想格式化一个前6位数的数字,然后将它们分成3个用短划线分隔的数字' 432-243-23243'。如何允许最后的数字有任何长度。
preg_replace("/^(\d{3})(\d{3})(\d{1,13})$/", "$1-$2-$3", $number);
我尝试过使用substr implode("-", str_split($num, 3));
,但我得到了这个结果000-000-000-0
我希望这个数字与" 000-000-000000"
相似答案 0 :(得分:1)
您的代码效果很好:
<?php
$number = "123456789123";
$num = preg_replace("/^(\d{3})(\d{3})(\d+)$/", "$1-$2-$3", $number);
echo $num; // 123-456-789123
?>
答案 1 :(得分:1)
我总是喜欢使用REGEX上的字符串函数,如果它可以完成工作......
$str = '00000000000000000';
$repl = implode('-', str_split(substr($str, 0, 6), 3)) . '-';
echo substr_replace($str, $repl, 0, 6);
// result: 000-000-00000000000
可替换地:
$repl = str_pad(substr($str, 3, 3), 5, '-', STR_PAD_BOTH);
echo substr_replace($str, $repl, 3, 5);
可替换地:
echo substr_replace($str, $str[0].$str[1].$str[2].'-'.$str[3].$str[4].$str[5].'-', 0, 6);
答案 2 :(得分:0)
您可以使用preg_replace
限制参数(如果您已经知道字符串只包含数字且至少包含7个数字):
$str = preg_replace('~...\K~', '-', $str, 2);