2012-03-25 5 views
0

Я хотел бы распечатать номер телефона номер (31999999) как 31-999-999 (PHP). Я никогда этого не делал раньше. Может кто-нибудь мне помочь?Номер телефона

Благодаря

+3

Будет ли вход всегда выглядеть так? Будет ли вывод всегда выглядеть так? что ты уже испробовал? –

+0

Да, так будет – user1286650

ответ

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

+0

Нет, потому что следующее будет работать над «Это строка blah blah 12345678 blah» (Кроме того, замените на 'preg_replace_all()', если вы хотите несколько чисел в одной строке, но будьте осторожны, так как это приведет к неожиданному поведению с числами длиннее 8 цифр) –

0

Вы должны манипулировать подстроки для того, чтобы сделать это. К счастью, PHP имеет функцию substr().

+0

Спасибо, я проверю это. – user1286650

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 не хранит телефонные номера ничем, кроме строки. –

+0

@OliCharlesworth: Это хороший момент - я упомянул об этом для полноты, так как формат не был указан. Тем не менее, я отредактирую ответ. – Cam

+0

Спасибо за ответ :) – user1286650

Смежные вопросы