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

时间:2014-09-30 02:56:49

标签: php hyperlink

在大多数聊天应用程序中,当用户输入超链接时,它会在聊天窗口中自动变为可点击。如何使用PHP / JavaScript / JQuery复制此行为?

基本上我让它工作的想法是测试聊天消息字符串中的超链接,并将它们包含在<a href>标签中,并将它们自己作为链接。这是正确的,如果是的话,我该怎么做?另外,我如何制作链接以便在新标签页中打开,而不是替换我的页面?

编辑 这让我花了不少试验和错误,但这个PHP函数应该在所有现实场景中都能正常工作:

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 个答案:

答案 0 :(得分:2)

您可以使用php或javascript正则表达式来测试它是否是URL(链接)。 如果是,则使用jquery创建一个html链接标记。

这是正则表达式

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

这是来源http://code.tutsplus.com/tutorials/8-regular-expressions-you-should-know--net-6149