猿问

用 PHP 中相同域的链接替换纯文本

我正在用链接替换纯文本,但我做错了。


我尝试了该preg_replace()功能,但它似乎根本无法解决我的问题。


$string = 'This is a message with multiple links: http://google.com http://twitter.com http://google.com/qwerty http://facebook.com http://google.com/ytrewq';


preg_match_all('/(^|\s)((http(s)?\:\/\/)?[\w-]+(\.[\w-]+)+[^\s]*[^.,\s])/u', $string, $url);


$links = $url[2];


foreach($links as $link){

    $final_string = str_replace($link, '<a href="'.$link.'">'.$link.'</a>', $string);

}


echo $final_string;

请注意,三个链接来自同一个域http://google.com,因此在替换第一个链接时,它会在其他链接中这样做。


foreach我用于需要为每个链接执行的函数的循环(我不写它,因为它现在不重要)。


我希望能够单独处理所有链接,并且共享域的链接不会相互踩踏。


我得到的输出:


This is a message with multiple links: <a href="http://google.com">http://google.com</a> <a href="http://twitter.com">http://twitter.com</a> <a href="http://google.com">http://google.com</a>/qwerty <a href="http://facebook.com">http://facebook.com</a> <a href="http://google.com">http://google.com</a>/ytrewq

我希望的输出:


This is a message with multiple links: <a href="http://google.com">http://google.com</a> <a href="http://twitter.com">http://twitter.com</a> <a href="http://google.com/qwerty">http://google.com/qwerty</a> <a href="http://facebook.com">http://facebook.com</a> <a href="http://google.com/ytrewq">http://google.com/ytrewq</a>


凤凰求蛊
浏览 177回答 2
2回答
随时随地看视频慕课网APP
我要回答