增强的RegEx用于将URL转换为链接

时间:2012-12-03 10:28:09

标签: php regex

好的我知道有很多方法可以将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“man”......它把它变成这样的东西

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

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

1 个答案:

答案 0 :(得分:0)

您必须在正则表达式中禁用单词&quot;,而不仅仅是字符"

我知道禁止言语的唯一方法就是:Regular expression to match a line that doesn't contain a word?

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

#(https?://([_a-zA-Z0-9-]+\.[a-z0-9]+)/?((?!(&quot;|\(|\)|<|>)).)*)#i