将链接转换为超链接,但第一个链接转换所有其他链接


Converting links to hyperlinks but the first link convert all the others

我有一个小的形式,允许用户发送一个项目的描述,我想将每个链接转换为超链接,但我有一个问题与我的代码,当它找到第一个链接,它转换与相同的链接的所有其他超链接。因此,当文本输入包含一个链接时,此代码可以工作,但一旦包含2个或更多链接,问题就会弹出!

$reg_exUrl = "/(http|https|ftp|ftps)':'/'/[a-zA-Z0-9'-'.]+'.[a-zA-Z]{2,3}('/'S*)?/";
if(preg_match($reg_exUrl, $_POST['description'], $url))
{
   $_POST['description'] = preg_replace($reg_exUrl, '<a target="_blank" href="'.$url[0].'">'.$url[0].'</a>', $_POST['description']);
}

示例1 link:

Text input: "blablabla http://google.com"
Result: "blablabla <a href="http://google.com">http://google.com</a>"

示例- 2个链接:

Text input: "blablabla http://google.com
blablabla http://youtube.com"
Result: "blablabla <a href="http://google.com">http://google.com</a>
blablabla <a href="http://google.com">http://google.com</a>"

我希望我说得足够清楚,如果你有任何关于如何解决这个问题的想法,那就太棒了!

谢谢

Try

function makeClickableLinks($s)
{
    return preg_replace('@(https?://([-'w'.]+[-'w])+(:'d+)?(/(['w/_'.#-]*('?'S+)?[^'.'s])?)?)@', '<a href="$1" target="_blank">$1</a>', $s);
}
调用函数

echo makeClickableLinks($_POST['description']);