我有一个包含用户博客内容的字符串。如果它们包含以下内容:
www.google.com
http://google.com
http://www.google.com
在他们的博客文章中,我希望PHP用真正的超链接替换这些事件,但保留原始子字符串(即不要将www.google.com
更改为http://www.google.com
)。
有人知道如何用PHP和正则表达式做到这一点吗?我试过这个:
echo preg_replace('/((www|http:\/\/)[^ ]+)/', '<a href="$1" target="_blank">$1</a>', $content);
但是如果你用空格结束链接,这只会成功。如果以逗号或句号结尾,则会失败。
答案 0 :(得分:3)
preg_replace('/\b(?:(http(s?):\/\/)|(?=www\.))(\S+)/is',
'<a href="http$2://$3" target="_blank">$1$3</a>',
$content);
答案 1 :(得分:0)
$pattern = '/<a (.*?)href=[\"\'](.*?)\/\/(.*?)[\"\'](.*?)>(.*?)<\/a>/i';
$new_content = preg_replace($pattern, '$5', $content);