1

我需要转这个电话号码:

5555555555

带分隔符的字符串:

"555.555.5555"

这是我的代码:

$phone = 5555555555;
$phoneArray = explode(2, $phone);
print_r($phoneArray);

它返回这个:

Array ( [0] => 555 [1] => [2] => 55555 )

我究竟做错了什么?

4

3 回答 3

4

你需要更多这样的东西:

$number = '123456789';
$segments = array();

$segments[] = substr($number, 0, 3);
$segments[] = substr($number, 3, 3);
$segments[] = substr($number, 6, 4);

$number = implode('.', $segments); // Comes out to 123.456.7890

请注意,您需要先进行一些格式检查。您需要验证他们是否实际输入了一个没有分隔符号的 10 位数字。

于 2012-05-07T20:51:32.453 回答
4

有很多方法可以做到这一点,并且不需要 RegEx,但这里有一个很好且简单的带有 RegEx 的方法:

$phone = '5555555555';
echo preg_replace('/(\d{3})(\d{3})(\d{4})/', "$1.$2.$3", $phone);

干杯

于 2012-05-07T20:55:09.173 回答
1

您可能不想使用explode,因为您在字符串中没有已知的分隔符来导致拆分。您可以使用 str_split($phone,3) 这将为您提供 3 个 3 的数组元素和 1 的第 4 个。保留前两个并将最后两个合并到您的第三个数组元素中:

$phone = 5555555555;
$phoneArray = str_split($phone,3);
$phoneArray[2] .= phoneArray[3];

print_r($phoneArray);

希望有帮助。

于 2012-05-07T20:58:56.120 回答