@Legal2019
Всё в имени моём... и радость и печаль...

Как сделать вывод без лишних символов?

Всем привет,
У меня есть блок:
<?php
                if (get_field('court_tel_a_archive')) {
                    echo '<h4><a href="tel:+7 ' . get_field('court_tel_a_archive') . '" rel="nofollow">&#9990; +7 ' .get_field('court_tel_a_archive'). '</a>';
                } else {
                    echo '<p>тел.:&nbsp;+7 (49*) ***-**-**</p>';
                }
                ?>

Чтобы этот блок вывел номер телефона, в соответствующем поле указываю (495) 123-45-00 и тогда
этот блок выводит ссылку в виде +7 (495) 123-45-00, и код ссылки получается:
<a href="tel:+7 (495) 123-45-00">
Вопрос № 1:
Как сделать так, чтобы при вводе (495) 123-45-00 ссылка выводилась бы в виде (495) 123-45-00, а вот код ссылки был бы:
<a href="tel:+74951234500">
Вопрос № 2:
Как сделать так, чтобы при вводе 4951234500 ссылка выводилась бы в виде (495) 123-45-00, а вот код ссылки был бы:
<a href="tel:+74951234500">
P.S. "движок WP"
  • Вопрос задан
  • 98 просмотров
Решения вопроса 2
@Flying
Если делать корректно - то вам стоит использовать libphonenumber, есть её порт на PHP.

Однако если речь идёт о частном случае - то всё можно сделать намного проще:
function formatPhone($phone)
{
    $number = preg_replace('/\D+/', '', $phone);
    if (strlen($number) === 10) {
        $number = '7' . $number;
    }
    return [
        'display' => sprintf('+%s (%s) %s-%s-%s', substr($number, 0, -10), substr($number, -10, 3), substr($number, -7, 3), substr($number, -4, 2),
            substr($number, -2, 2)),
        'link'    => sprintf('tel:+%s', $number),
    ];
}

$phone = '(495) 123-45-00';
$formatted = formatPhone($phone);

echo "${formatted['display']}\n{$formatted['link']}\n";

Посмотреть вживую можно здесь.
Ответ написан
Комментировать
@DaBags
По первому недавно реализовывал подобное так:
function phoneNumber($number) {
	$number = preg_replace('/[^0-9]/', '', $number);	// Убираем лишние символы
	$number = substr_replace($number, '+7', 0, 1);	// Заменяем первую 8 на +7 (убрать если не нужно)
	echo $number;
}

Вывод на странице:
phoneNumber(номер телефона в формате 8 (495) 123-45-00)

По второму может кто ещё подскажет
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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