如何识别和替换引用我网站外部图像的<img/>标记?

时间:2011-03-28 05:26:02

标签: regex

我正在尝试阻止我网站之外的所有图片链接。我怎么能这样做?

离。我想接受

http://www.mysite.com/notnecessary/notnecessary/possible.jpg 
http://mysite.com/notnecessary/notnecessary/possible.jpg 
http://www.mysite.com/possible.gif

但不是

http://www.google.com/notnecessary/notnecessary/possible.jpg
http://www.othersite.net/notnecessary/notnecessary/possible.jpg 

我这样做是为了防止黑客入侵:)但我仍然希望能够包含我网站的图片。使用

`<img src=""></img>`

编辑:

如果我有评论说:

' Hello, these are images that contain a car 
<img src="http://mysite.com/possiblepath/car.jpg"></img>
<img src="http://www.othersite.com/w/e/car.gif"></img>
<img src='http://othersite.com/car.jpg'></img>

Which car is your favorite?'

所以从这个评论中我需要:

' Hello, these are images that contain a car 
<img src="http://mysite.com/possiblepath/car.jpg"></img>
http://www.othersite.com/w/e/car.gif
http://othersite.com/car.jpg'

Which car is your favorite?'

我的网站img代码应该保留,其他人应该变成URL /链接。

谢谢!非常感谢。

3 个答案:

答案 0 :(得分:1)

^http://(.*)mysite.com(.*)$

这对你有用。您可能需要在括号前添加\,具体取决于您使用它解析的内容。如果给定的URL属于mysite.com或其任何子域,它将匹配。

答案 1 :(得分:1)

尝试这样的事情:

^https?://(\w+\.)*mysite\.com($|[/?#&])

注释:

  • (\w+\.)是您的子域可能拥有的简单概念。如果您只对www感兴趣,可以对其进行更改。
  • ($|[/?#&]) - 在/之后直接检查字符串的结尾或?#&mysite.com之一。您要避免http://mysite.com.example.comhttp://example.com/mysite.comhttp://example.com?source=mysite.com
  • 不要检查文件扩展名,除非你打算将其列入白名单,但无论如何它都是无用的。任何URL都可能隐藏图像 - 服务器可能会为任何请求返回任何文件。

答案 2 :(得分:1)

^https?://(?:www\.)?mysite\.com/

^           Start of line
http
s?          Maybe you have SSL??
://
(www.)?     With or without www. Similar to 
mysite
\.          Prevents "mysites"
com/