Php:将前6个字符分成3个除以破折号

时间:2016-04-22 20:00:21

标签: php regex

我想格式化一个前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"

相似

3 个答案:

答案 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);