Удаляем все символы кроме цифр (для телефонной ссылки)
Первый вариант — удалить все символы кроме цифр
Чтобы удалить все символы кроме цифр (для телефонной ссылки), можно воспользоваться регулярными выражениями:
$tel = "+7 (123) 456-7899";
$tel = preg_replace('/[^0-9]/', '', $tel);
echo $tel;
Выведет: 71234567899
Это удобно для автоматического преобразования номера телефона в нужный формат для телефонной ссылки. Например с помощью произвольных полей ACF :
$telefon = get_field('telefon'); //получаем поле с телефоном
$tel = preg_replace('/[^0-9]/', '', $telefon); //преобразуем для ссылки
<a href = "tel:+<?php echo $tel; ?>"><?php echo $telefon; ?></a> //выводим
Второй вариант с сохранением знака «+» если он есть.
function cleanPhoneNumber($phone) {
// Сохраняем, если есть в начале знак +
$hasPlus = str_starts_with($phone, '+');
// Удаляем все, кроме цифр
$digits = preg_replace('/\D+/', '', $phone);
// Если был + в начале, добавляем его обратно return
$hasPlus ? '+' . $digits : $digits;
}
примеры:
echo cleanPhoneNumber('+7 (999) 123-45-67'); // +79991234567
echo cleanPhoneNumber('8 (800) 555-35-35'); // 88005553535
echo cleanPhoneNumber('+1-202-555-0191'); // +12025550191
Объяснение:
str_starts_with($phone, '+')— проверяет, начинается ли строка с + (доступно сPHP 8.0+).preg_replace('/\D+/', '', $phone)— удаляет всё, что не является цифрой.- Если изначально был
+, добавляем его в начало.
Если у вас PHP ниже 8.0, можно заменить str_starts_with на substr($phone, 0, 1) === '+'.

