duan02468 2014-09-30 02:56
浏览 214
已采纳

PHP:检测字符串是否为超链接并使其可单击

In most chat applications when a user inputs a hyperlink, it automatically becomes clickable in the chat window. How do I replicate this behavior using PHP/JavaScript/JQuery?

Essentially my idea of making it work is testing the chat message string for hyperlinks and encasing them in <a href> tags with themselves as the link. Is that correct, and if so, how do I do it? Also, how would I make it so that the links open in a new tab, instead of replacing my page?

EDIT This took me quite a bit of trial and error, but this PHP function should work in all realistic scenarios:

function formatTextLinks($text) {
    $words = preg_split("/[\s,]+/", $text);
    $offset = 0;

    foreach($words as $value) {
        preg_match("/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/", $value, $matches);

        $s = $matches[0];
        if(!is_string($s)) continue;
        $pos = strpos($text, $s, $offset);
        if($pos !== false) {
            $helper = "";
            if(strpos($s, "http://") === false || strpos($s, "https://") === false) $helper = "http://";
            $text = substr_replace($text, "<a href='".$helper.$s."' target='_blank'>".$s."</a>", $pos, strlen($s));
            $offset = $pos + strlen("<a href='".$helper.$s."' target='_blank'>".$s."</a>");
        }
    }

    return $text;
}
  • 写回答

1条回答 默认 最新

  • douyan0732 2014-09-30 03:04
    关注

    You could use a php or javascript regular expression to test if it is a URL (link). If yes create a html link tag using jquery.

    This is the regex pattern

    /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/
    

    This is the source http://code.tutsplus.com/tutorials/8-regular-expressions-you-should-know--net-6149

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!