Как Вы форматируете 10 строк цифр в номер телефона?

У меня есть записи базы данных в форме 10 символьных длинных строк, такой как 4085551234.

Я хочу отформатировать их в этот формат: (408) 555-1234.

Я думаю, что это - связанный regex. Я плохо знаком с программированием и абсолютно выучился самостоятельно здесь, таким образом, любой вид ресурса, касающегося выполнения обработки текста, ценился бы также.Спасибо!

18
задан Kara 26 May 2014 в 23:10
поделиться

4 ответа

Регекс для этого определенно перебор. Если вы хотите взять "номер телефона" и нормализовать его до 10 цифр, это было бы неплохо для регекса. Чтобы сделать то, что вы просите, просто сделайте что-то вроде:

echo '('.substr($data, 0, 3).') '.substr($data, 3, 3).'-'.substr($data,6);

Так как вы уже знаете, как разделить ваши данные, вы можете просто использовать подложку или что-то подобное, чтобы захватить части, которые вы хотите. RegEx полезен для сопоставления строк, которые не всегда имеют строгий формат. (Например, переменное количество пробелов, переменные до или после, дополнительные тире и т.д.). Но в вашем случае вход всегда строго отформатирован 10-значными числами, больше ничего, так что вам не нужны лишние накладные расходы RegEx для его форматирования.

91
ответ дан 30 November 2019 в 05:37
поделиться

Посмотрите здесь: формат телефона телефона

function format_phone($phone)
{
    $phone = preg_replace("/^\d/", "", $phone);

    if(strlen($phone) == 7)
        return preg_replace("/(\d{3})(\d{4})/", "$1-$2", $phone);
    elseif(strlen($phone) == 10)
        return preg_replace("/(\d{3})(\d{3})(\d{4})/", "($1) $2-$3", $phone);
    else
        return $phone;
}
19
ответ дан 30 November 2019 в 05:37
поделиться

Я бы, наверное, выбрал

$num = "4085551234";  // given                                                  
$formatted = "(".substr($num,0,3).") ".substr($num,3,3)."-".substr($num,6);

Регекс здесь не совсем уместен.

6
ответ дан 30 November 2019 в 05:37
поделиться

Тривиально можно было бы сделать что-нибудь вроде:

\(\d\{3\}\)\(\d\{3\}\)\(\d\{4\}\)

Чтобы сопоставить 10 цифр с 3 выражениями подгрупп, а затем распечатать их, используя каждую подгруппу:

"(\1) \2-\3

Но на практике данные в свободной форме обычно немного хитрее

.
3
ответ дан 30 November 2019 в 05:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: