В последнее время нельзя пренебрегать кликабельными номерами телефонов т.к. количество клиентов, использующих мобильные телефоны превысило десктопы. И чтобы не потерять своего клиента, необходимо предоставить посетителю возможность беспрепятственно позвонить.

1.Оформление ссылки tel

По умолчанию на мобильных телефонах номера телефона распознается автоматически и преобразуются в ссылки.
До:

<div class=phone>+7 (495) 123-45-67</div>

После:

<div class=phone><a href=”tel:+74951234567″>+7 (495) 123-45-67</a></div>

Чтобы задать нормальные стили на мобильных, нужно писать два правила.

.phone {
color: #000;
font-size: 16px;
font-weight: 900;
}
.phone a {
color: #000;
font-size: 16px;
font-weight: 900;

}

Или по атрибуту:

a[href^=”tel:”] {
color: #000;
font-size: 16px;
font-weight: 900;

}


2.Отключить распознавание телефонов

 

Автоматическое распознавание телефонов работает не всегда корректно и срабатывает на большие цены. Его можно отключить, добавив метатег в <head> страницы и прописать ссылки у телефонов вручную.

<meta name=”format-detection” content=”telephone=no”>

 


3.Оборачивание телефонов ссылками

 

Замечена одна особенность – на андроид устройствах не всегда срабатывает клик по ссылке если в атрибуте href форматированный номер телефона.

<!– Рабочая ссылка –>
<a href=”tel:+74951234567″>+7 (495) 123-45-67</a>

<!– Нерабочая –>

<a href=”tel:+7 (495) 123-45-67″>+7 (495) 123-45-67</a>

 


4.Обвернуть телефон регулярным выражением

 

Если телефонов много, то лучше автоматизировать замену с помощью регулярного выражения.

function replace_phone_call($matches)
{
$tel = str_replace(array(‘-‘, ‘ ‘, ‘(‘ , ‘)’), ”, $matches[0]);
$tel = str_replace(‘+7’, ‘8’, $tel);
return ‘<a href=”tel:’ . $tel . ‘”>’ . $matches[0] . ‘</a>’;
}

function replace_phone($text)
{
return preg_replace_callback(‘/(?:\+|\d)[\d\-\(\) ]{9,}\d/’, ‘replace_phone_call’, $text);
}

$text = ‘Позвоните по телефону +7 (495) 123-45-67, или 88001234567’;

echo replace_phone($text);

Результат:

Позвоните по телефону <a href=”tel:84951234567″>+7 (495) 123-45-67</a>,

или <a href=”tel:88001234567″>88001234567</a>

Также можно добавить проверку мобильных с помощью mobiledetect и на десктопе ссылки не выводить.

require_once ‘Mobile_Detect.php’;
$detect = new Mobile_Detect;
define(‘IS_MOBILE’, $detect->isMobile() && !$detect->isTablet());

function replace_phone_call($matches)
{
$tel = str_replace(array(‘-‘, ‘ ‘, ‘(‘ , ‘)’), ”, $matches[0]);
$tel = str_replace(‘+7’, ‘8’, $tel);
return ‘<a href=”tel:’ . $tel . ‘”>’ . $matches[0] . ‘</a>’;
}

function replace_phone($text)
{
if (IS_MOBILE) {
return preg_replace_callback(‘/(?:\+|\d)[\d\-\(\) ]{9,}\d/’, ‘replace_phone_call’, $text);
} else {
return $text;
}
}

$text = ‘Позвоните по телефону +7 (495) 123-45-67, или 88001234567’;

echo replace_phone($text);

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

require_once ‘Mobile_Detect.php’;
$detect = new Mobile_Detect;
define(‘IS_MOBILE’, $detect->isMobile() && !$detect->isTablet());

function replace_phone_call($matches)
{
if (IS_MOBILE) {
$tel = str_replace(array(‘-‘, ‘ ‘, ‘(‘ , ‘)’), ”, $matches[0]);
$tel = str_replace(‘+7’, ‘8’, $tel);
return ‘<a href=”tel:’ . $tel . ‘”>’ . $matches[0] . ‘</a>’;
} else {
return ‘<a class=”modal” href=”/callbaсk”>’ . $matches[0] . ‘</a>’;
}
}

function replace_phone($text)
{
return preg_replace_callback(‘/(?:\+|\d)[\d\-\(\) ]{9,}\d/’, ‘replace_phone_call’, $text);
}

$text = ‘Позвоните по телефону +7 (495) 123-45-67, или 88001234567’;

echo replace_phone($text);


Результат на десктопе и планшетах:

Позвоните по телефону <a class=”modal” href=”/callbak”>+7 (495) 123-45-67</a>,

или <a class=”modal” href=”/callbak”>88001234567</a>

На мобильных:

Позвоните по телефону <a href=”tel:84951234567″>+7 (495) 123-45-67</a>,
или <a href=”tel:88001234567″>88001234567</a>

Was this article helpful to you?

Mihail51

Leave a Reply