使用正则表达式使链接可单击

时间:2009-08-07 03:24:01

标签: php regex

是否有正则表达式,可以找到一个包含以http://或www开头的单词并用<a>$1</a>换行的字符串?

谷歌搜索,但我似乎无法找到一个终极的。

另一个问题,如果它位于<img>标签内,你能以某种方式让它忽略吗?

非常感谢!

2 个答案:

答案 0 :(得分:8)

    $text = trim($text);
    while ($text != stripslashes($text)) { $text = stripslashes($text); }    
    $text = strip_tags($text,"<b><i><u>");
    $text = preg_replace("/(?<!http:\/\/)www\./","http://www.",$text);
    $text = preg_replace( "/((http|ftp)+(s)?:\/\/[^<>\s]+)/i", "<a href=\"\\0\" target=\"_blank\">\\0</a>",$text);

答案 1 :(得分:1)

祝你好运 - 找到开头很容易(大部分时间);找到了结局?祝你好运:

  • http://example.com/bob.jones.4.
  • http://example.com/bob.jones.4?
  • http://example.com/bob.jones.4!
  • http://stackoverflow.com/questions/1242733/make-links(oh-noes)
  • http://example.com/bob.'magic'.jones*2!
  • http://example.com/~(*)!

这些是有效的网址。请参阅RFC2396。但有时你想要拖尾标点符号,有时候你不需要。

/我想知道他可以使用带有(*')!的网址,因为他知道RFC2396允许使用的网址。