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

Php 将链接转换为超链接,但第一个链接将转换所有其他链接,php,regex,hyperlink,preg-replace,preg-match,Php,Regex,Hyperlink,Preg Replace,Preg Match,我有一个小表单,它允许用户发送一个项目的描述,我想将每个链接转换为超链接,但我的代码有一个问题,当它找到第一个链接时,它会转换具有相同链接的所有其他超链接。因此,当文本输入包含一个链接时,此代码有效,但一旦包含2个或更多链接,问题就会弹出 $reg_exUrl = "/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/"; if(preg_match($reg_exUrl, $_POST['descriptio

我有一个小表单,它允许用户发送一个项目的描述,我想将每个链接转换为超链接,但我的代码有一个问题,当它找到第一个链接时,它会转换具有相同链接的所有其他超链接。因此,当文本输入包含一个链接时,此代码有效,但一旦包含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']);
}
$reg|u 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,,$_POST['description']);
}
示例-1链接:

Text input: "blablabla http://google.com"
Result: "blablabla <a href="http://google.com">http://google.com</a>"
文本输入:“blabla”http://google.com"
结果:“布拉布拉布拉”
示例-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>"
文本输入:“blabla”http://google.com
喋喋不休http://youtube.com"
结果:“布拉布拉布拉
布拉布拉布拉”
我希望我足够清楚,如果你对如何解决这个问题有任何想法,那就太棒了

谢谢

试试看

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']);