PHP:URL检测(正则表达式)包括换行符

时间:2010-05-16 15:14:59

标签: php regex function

我希望有一个函数可以将文本作为输入,并将带有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?

提前致谢!

2 个答案:

答案 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]|/)))