Форматирование номера телефона в ссылке

12
S
На сайте с 24.08.2015
Offline
84
595

Приветствую!

Есть обычные ссылки с телефонами, например:

<a href="tel:+7 123 456 78 90">+7 123 456 78 90</a>
<a href="tel:+7 (123) 456 78 90">+7 (123) 456 78 90</a> 

Как бы их преобразовать к виду (т.е. убрать все лишние символы и пробелы и оставить только +7......):

<a href="tel:+71234567890">+7 123 456 78 90</a>
<a href="tel:+71234567890">+7 (123) 456 78 90</a> 

При этом, телефоны всегда могут быть разные.

Гугл выдает много подобных вопросов на stackoverflow, но нормального примера так и не нашел, либо они под конкретный индивидуальный (хоть и похожий) вопрос.

Спасибо!

Kaavain
На сайте с 28.07.2015
Offline
163
#1
samdo :

Приветствую!

Есть обычные ссылки с телефонами, например:

Как бы их преобразовать к виду (т.е. убрать все лишние символы и пробелы и оставить только +7......):


Лично я - не понял вопроса. Вообще. href= юзер не видит, там не должно быть пробелов вообще.

А между >< может быть вообще что угодно, хоть картинка

Могу порекомендовать только хостинг: https://traf.at/vps - за 3 года все на 4++ и цены не подняли. Ну и банк для белых ИП: https://traf.at/bankm
br.almighty
На сайте с 13.07.2021
Offline
86
#2

S
На сайте с 24.08.2015
Offline
84
#3


Понятно, что вручную его можно привести к этому виду (в моем примере так и сделано). Но, имеется же в виду скрипт, который это сделает.

br.almighty
На сайте с 13.07.2021
Offline
86
#4

На скриншоте пример использования ИИ. Это самое простое, если нужно быстро и не так много.

Пример похож, но если вставить список с другими номерами, он тоже это сделает

S
На сайте с 24.08.2015
Offline
84
#5
Речь о ссылках на странице сайта. Нужен скрипт, который автоматически преобразует a href="tel:+7 (123) 456 78 90" в a href="tel:+71234567890"
br.almighty
На сайте с 13.07.2021
Offline
86
#6
// Находим все элементы <a> с атрибутом href, начинающимся с "tel:"
document.querySelectorAll('a[href^="tel:"]').forEach(link => {
    // Получаем текущее значение href
    const href = link.getAttribute('href');
    
    // Удаляем все пробелы, скобки и дефисы из номера телефона
    const cleanedHref = href.replace(/[()\s-]/g, '');
    
    // Обновляем значение href
    link.setAttribute('href', cleanedHref);
});

Не знаю будет или нет работать, не проверил.

Сама такая идея - бред. Надо на сервере это всё менять, а не у клиента уже.

S
На сайте с 24.08.2015
Offline
84
#7
br.almighty #:

Не знаю будет или нет работать, не проверил.

Сама такая идея - бред. Надо на сервере это всё менять, а не у клиента уже.

Благодарю 👍, оно самое, работает.

Да я и не против не сервере менять, на php решение тоже приветствуется, если оно есть, то конечно использовал бы его.

K
На сайте с 14.01.2025
Offline
9
#8
samdo #:

Благодарю 👍, оно самое, работает.

Да я и не против не сервере менять, на php решение тоже приветствуется, если оно есть, то конечно использовал бы его.

чат гпт в помощь) Делов на 5 мин😀

S
На сайте с 24.08.2015
Offline
84
#9
Kuala #:

чат гпт в помощь) Делов на 5 мин😀

Нет ничего лучше кода, написанного хорошим кодером) так что, если кто-то из форумчан напишет решение на php, то, думаю, многие сохранят себе его в "копилку" 😊

P.S.  Решение на JS от br.almighty, при этом, не теряет ценности и используется, за что ОГРОМНАЯ БЛАГОДАРНОСТЬ.

E
На сайте с 10.02.2024
Offline
13
#10
samdo #:

Нет ничего лучше кода, написанного хорошим кодером) так что, если кто-то из форумчан напишет решение на php, то, думаю, многие сохранят себе его в "копилку" 😊

P.S.  Решение на JS от br.almighty, при этом, не теряет ценности и используется, за что ОГРОМНАЯ БЛАГОДАРНОСТЬ.

ИИ лучший кодер для таких простых задач. Зачем тратить время на написание кода, когда быстрее составить промпт и проверить.

PHP

function cleanPhoneLinks($html) {
    return preg_replace_callback(
        '/<a href="tel:([^"]+)">(.*?)<\/a>/i',
        function($matches) {
            // Очищаем номер телефона в href от всех символов кроме цифр и +
            $cleanNumber = preg_replace('/[^0-9+]/', '', $matches[1]);
            // Возвращаем ссылку с очищенным номером, сохраняя оригинальный текст
            return '<a href="tel:' . $cleanNumber . '">' . $matches[2] . '</a>';
        },
        $html
    );
}

// Тест:

$result = cleanPhoneLinks($html);
echo $result;
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий