正则表达式仅适用于网站

时间:2010-05-26 12:57:36

标签: php regex

我是正则表达式的新手。

我需要在某些文本中找到网站,我正在寻找能够找到字符串的正则表达式:

www.my.home, http://my.site.it

但是这个正则表达式不应该找到像:

这样的字符串

address@my.site.it 或者如果网站已经在html标签内

<a href="http://www.my.site.com/">
  <span style="font-style: normal;">www.mambo-test.org</span>
</a>

我试过这个:

\ b((https?:// [^] )|(www。[^] ))

但它也会在href和标签之间找到网站:

<a href="http://www.my.site.com/">
  <span style="font-style: normal;">www.mambo-test.org</span>
</a>

除了这个案子我不知道怎么做。

2 个答案:

答案 0 :(得分:2)

您尝试做的事情称为通过正则表达式解析HTML代码

首先,我能感受到你的痛苦。

其次,详细解释了here 为什么你不应该这样做

第三,如果您的客户在富文本编辑器中插入Web链接,并且他们有时会正确地执行此操作,有时他们不会这样做,那么......这绝对是一种不好的做法,这样的人应该接受教育。如果他们懒得点击富文本编辑器的“链接”按钮,他们的文本将被视为简单文本而不是链接。他们很快就会明白。

Forth,您使用哪种富文本编辑器? TinyMCE 提供了一整套功能和插件,可让您预先/后期处理用户插入的文本容易。这可能比尝试在PHP中编辑该文本更容易。

第五,如果您仍然需要这样做,您可能需要查看this tutorial on how to parse HTML to find links

答案 1 :(得分:1)

也许this可以解决您的问题。