【问题标题】:Converting To Clickable Telephone Link转换为可点击的电话链接
【发布时间】:2018-04-08 17:28:00
【问题描述】:

我在玩一个基本功能,想知道下面是不是一种将纯文本转换为可点击电话链接的特别有效的方法?

该函数将假设以下纯文本场景:

  • 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;
}

【问题讨论】:

    标签: php function tel


    【解决方案1】:

    您可以使用正则表达式。
    这会将 a 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。

    【讨论】:

    • 很好,但这并没有考虑任何空格。您将如何通过正则表达式删除它们?
    • 抱歉没有注意到空格。我看看能不能解决这个问题。
    • @user1235285 我认为除了 str_replace 之外没有任何好的解决方案,就像您所做的那样。 $result = preg_replace($re, $subst, str_replace(array("(0)"," "), "",$str));
    • 不用担心。这个 sn-p 还顺便编辑了主号码。我会玩...
    • 这似乎可以完成这项工作...function pd_convert_tel_number($tel) { $re = '/^(0|\+44)(.*)/m'; $str = $tel; $subst = '&lt;a href="tel:+44$2"&gt;'.$tel.'&lt;/a&gt;'; $result = preg_replace($re, $subst, str_replace(array("(0)"," "), "",$str)); return $result; }
    【解决方案2】:

    我会创建一个只是正确格式化电话号码的功能(不添加&lt;a&gt;&lt;/a&gt;。然后我会添加带有格式化电话号码的链接。但如果你的功能有效,它似乎不会太糟糕。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-22
      • 1970-01-01
      • 2022-11-24
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多