Я хотел бы распечатать номер телефона номер (31999999) как 31-999-999 (PHP). Я никогда этого не делал раньше. Может кто-нибудь мне помочь?Номер телефона
Благодаря
Я хотел бы распечатать номер телефона номер (31999999) как 31-999-999 (PHP). Я никогда этого не делал раньше. Может кто-нибудь мне помочь?Номер телефона
Благодаря
<?php
$phone = 31999999;
$formatted_phone = preg_replace("|\b(\d{2})(\d{3})(\d{3})\b|", "$1-$2-$3", $phone);
echo $formatted_phone;
Это то, что я придумал, могут быть более простые способы, но это кажется коротким. Тем не менее, он будет принимать только точный 8-значный номер, не более ничего. Если вам нужен другой шаблон, вам нужно точно указать свой ввод.
Это классно, потому что он отображает исходный номер, если форматирование не работает. Должны ли вы добавить '^' и '$' в регулярное выражение? – Cam
Нет, потому что следующее будет работать над «Это строка blah blah 12345678 blah» (Кроме того, замените на 'preg_replace_all()', если вы хотите несколько чисел в одной строке, но будьте осторожны, так как это приведет к неожиданному поведению с числами длиннее 8 цифр) –
Вы должны манипулировать подстроки для того, чтобы сделать это. К счастью, PHP имеет функцию substr().
Спасибо, я проверю это. – user1286650
Мы можем воспользоваться слабой системой типа PHP, так что это не имеет значения, если число хранится в виде строки или нет:
$num = 112223333;
echo substr($num,0,2) . "-" . substr($num, 2, 3) . "-" . substr($num, 4, 4); // 11-222-2333
редактирования: По комментарий Оли ниже, в то время как это представляет интерес что этот код работает, если $ num является строкой или int, для ясности и для избежания ошибок вам следует хранить $ num как строку.
Ну, мы надеемся, что OP не хранит телефонные номера ничем, кроме строки. –
@OliCharlesworth: Это хороший момент - я упомянул об этом для полноты, так как формат не был указан. Тем не менее, я отредактирую ответ. – Cam
Спасибо за ответ :) – user1286650
Будет ли вход всегда выглядеть так? Будет ли вывод всегда выглядеть так? что ты уже испробовал? –
Да, так будет – user1286650