将所有链接替换为正则表达式


Replacing all links with regular expression

可能的重复项:
PHP 链接内容中的链接

我在查找文本链接并将它们包装在 A 标签中时遇到了一些困难。

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

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

现在找不到好的重复项,所以尝试一些简单的事情,比如重复前缀:

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

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

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