1

好的,我知道有很多方法可以将 URL 转换为链接(锚标记)...

问题是我想匹配一个支持 http 和 https 协议的 URL ......然后它将在新选项卡中打开......但我正在寻找一种安全的方式来做到这一点......所以简单的(.*)不做这项工作....我尝试过这样的事情:

    $var=preg_replace('#(https?://([_a-zA-Z0-9-]+\.[a-z0-9]+)/?[^ ()<>]*)#i', '< href="\\1" target="blank">\\1</a>', $var);

但是,如果我有这样的字符串:“嘿,看看这个“http://google.com”人”......它会变成这样的东西

嘿,看看这个:
<a href="http://google.com&quot;" target="blank">http://google.com&quot;</a>

所以我最终在链接末尾有一个双引号:S 知道如何增强这个 RegEx 吗?我尝试"在“不允许的字符”中添加一个: [^ "()<>]但它根本没有效果。

4

1 回答 1

0

你必须&quot;在你的正则表达式中禁止这个词,而不仅仅是字符"

我知道禁止单词的唯一方法是:正则表达式匹配不包含单词的行?

所以我猜这个正则表达式可能有效:

#(https?://([_a-zA-Z0-9-]+\.[a-z0-9]+)/?((?!(&quot;|\(|\)|<|>)).)*)#i
于 2012-12-03T10:53:07.547 回答