用正则表达式替换所有链接

时间:2011-12-10 15:51:15

标签: php regex

  

可能重复:
  PHP Linkify Links In Content

我发现文本链接并将其包装在A标签中时有点困惑。

到目前为止,我正在使用此/ [\w]*\.[a-z]{2,}/i来查找适用于此类链接的链接,stackoverflow.com但它错过了www。或任何事前的事。

总结一下,我正在尝试找到所有链接并包装在A标签中。非文本包含协议部分(http(s)://)或端口部分,这使得它更难。

2 个答案:

答案 0 :(得分:1)

$text = preg_replace('@((?:http(?:s)?://)?(?:www)?([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $text);

答案 1 :(得分:1)

现在找不到good duplicate,所以尝试一些简单的方法,比如重复前缀:

 /\b(\w[\w-]+\.)+[a-z]{2,}\b/i

我不会用这个;误报太多了。但是你并没有真正限制范围。替代方案包括例如固定的TLD列表,使其更加具体。