我希望有一个函数可以将文本作为输入,并将带有HTML链接的URL作为输出返回给文本。
我的草稿如下:
function autoLink($text) {
return preg_replace('/https?:\/\/[\S]+/i', '<a href="\0">\0</a>', $text);
}
但这不能正常运作。
对于包含...
的输入文本http://www.google.de/
...我得到以下输出:
<a href="http://www.google.de/<br">http://www.google.de/<br</a> />
为什么包含换行符?我怎么能将它限制在真实的URL?
提前致谢!
答案 0 :(得分:4)
好吧,<
不是空格字符,所以it is matched by [\S]
。您可以将其从您接受的字符集中排除:
preg_replace('/https?:\/\/[^\s<]+/i', '<a href="\0">\0</a>', $text);
答案 1 :(得分:1)
如何使用Gruber's URL Regex?
\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))