在大多数聊天应用程序中,当用户输入超链接时,它会在聊天窗口中自动变为可点击。如何使用PHP/JavaScript/JQuery复制此行为?PHP:检测字符串是否为超链接并使其可点击
本质上讲,我的工作原理是测试超链接的聊天消息字符串,并将它们包含在<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;
}
途径广泛用于SO恐怕一个问题。 – RiggsFolly 2014-09-30 02:58:43
@RiggsFolly我会如何重述它?这对我来说似乎很简单;所有我问的是我怎么能检测到一个字符串包含一个URL(完全限定或不是,它只需要在地址栏中工作),然后使它可点击作为超链接。 – StrongJoshua 2014-09-30 03:00:42
完全限定:http://的正则表达式。或者不是:除非你有.com | .org | .net | ect的正则表达式,否则可能是不可行的 – Oberst 2014-09-30 03:02:05