Преобразование в интерактивную телефонную связь

Я играл с основной функцией и задавался вопросом, является ли нижеприведенный метод особенно эффективным для преобразования обычного текста в интерактивную ссылку?

Функция будет предполагать следующие сценарии простого текста:

  • 01234 123 456
  • +44 1234 123 456
  • +44 (0) 1234 123 456

Вот функция:

function pd_convert_tel_number($tel) {
    if (substr( $tel, 0, 1 ) === '0') {
        $tel = '<a href="tel:+44'.ltrim(str_replace(' ', '', $tel), '0').'">'.$tel.'</a>';
    } else if(strpos($tel, '+44') !== false || strpos($tel, '(0)') !== false) {
        $tel = '<a href="tel:'.str_replace(array( '(0)', ' ' ), '', $tel).'">'.$tel.'</a>';
    } else {
        $tel = '<a href="tel:"'.$tel.'">'.$tel.'</a>';
    }

    return $tel;
}

2 ответа

Вы можете использовать регулярные выражения.
Это добавляет тэг href к номеру телефона.

https://regex101.com/r/vT9phL/1

$re = '/^(0|\+44)(.*)/m';
$str = '01234 123 456
+44 1234 123 456
+44 (0) 1234 123 456';
$subst = '<a href="tel:+44 $2>$2</a>';

$result = preg_replace($re, $subst, $str);

echo $result;

Шаблон будет соответствовать "0" или +44 в начале строки и "удалить его", а затем добавить href.

Я бы сделал функцию, которая просто форматирует номер телефона правильно (без добавления <a></a>, Тогда я бы просто добавил ссылку с отформатированным номером телефона. Но если ваша функция работает, это не так уж плохо.

Другие вопросы по тегам