4

我有一个包含用户博客内容的字符串。如果它们包括以下内容:

www.google.com
http://google.com
http://www.google.com

在他们的博客文章中,我希望 PHP 用真正的超链接替换这些出现,但保留原始子字符串(即不更改www.google.comhttp://www.google.com)。

有人知道我如何使用 PHP 和正则表达式来做到这一点吗?我试过这个:

echo preg_replace('/((www|http:\/\/)[^ ]+)/', '<a href="$1" target="_blank">$1</a>', $content);

但这只有在您以空格结束链接时才会成功。如果以逗号或句号结束,则失败。

4

2 回答 2

3
preg_replace('/\b(?:(http(s?):\/\/)|(?=www\.))(\S+)/is',
             '<a href="http$2://$3" target="_blank">$1$3</a>',
             $content); 
于 2012-08-21T15:33:10.997 回答
0
$pattern = '/<a (.*?)href=[\"\'](.*?)\/\/(.*?)[\"\'](.*?)>(.*?)<\/a>/i';
$new_content = preg_replace($pattern, '$5', $content);
于 2013-03-23T07:48:15.533 回答