2012-03-25 91 views
0

我想以31-999-999(PHP)打印原始电话号码记录(31999999)。我从来没有这样做过。谁能帮我吗?电话号码输出

谢谢

+3

输入是否总是像这样?输出总是如此吗?你试过什么了? – 2012-03-25 15:31:59

+0

是的,它会保持那样 – user1286650 2012-03-25 15:44:56

回答

1
<?php 
$phone = 31999999; 

$formatted_phone = preg_replace("|\b(\d{2})(\d{3})(\d{3})\b|", "$1-$2-$3", $phone); 

echo $formatted_phone; 

这就是我想到的,可能有更简单的方法,但这似乎最短。然而,它只会接受一个确切的8位数字,没有什么比这更少的了。如果你想要一个不同的模式,你需要准确地指定你的输入。

+0

这很酷,因为如果格式不起作用,它将显示原始号码。你是否应该将'^'和'$'添加到正则表达式中? – Cam 2012-03-25 15:44:26

+0

不,因为下面的方法可以处理“这是一个字符串等等12345678等等”(同样,如果你想在单个字符串中输入几个数字,也可以用'preg_replace_all()替换,但要小心,因为它会带有意外的数字行为长度超过8位) – 2012-03-25 15:47:53

0

您需要操纵子字符串才能做到这一点。幸运的是,PHP具有substr()函数。

+0

谢谢,我会检查出来。 – user1286650 2012-03-25 16:01:53

2

我们可以利用PHP的弱类型的系统,因此,如果号码存储为一个字符串或没有也没关系:

$num = 112223333; 
echo substr($num,0,2) . "-" . substr($num, 2, 3) . "-" . substr($num, 4, 4); // 11-222-2333 

编辑:按照下面的奥利的评论,虽然它的利息无论$ num是一个字符串还是一个int,这段代码都可以工作,为了清晰起见并避免错误,您应该将$ num存储为一个字符串。

+0

那么,希望OP不会将字符串以外的任何电话号码存储起来。 – 2012-03-25 15:39:55

+0

@OliCharlesworth:这是一个很好的观点 - 我提到它的完整性,因为没有指出格式。我会尽力编辑答案。 – Cam 2012-03-25 15:41:57

+0

感谢您的回答:) – user1286650 2012-03-25 16:01:22