如何在HTML页面中检索URL?

时间:2012-01-30 12:32:14

标签: php regex

我必须从脏的html页面中检索这个URL:

......... http://www.imdb.com/title/tt0092699/ ......

显然网址也可以

http://www.imdb.co.uk/title/tt0092699/ http://www.imdb.es/title/tt0092699/ http://www.imdb.com/title/tt0092699 https://www.imdb.com/title/tt0092699/ https://www.imdb.com/title/tt0092699

(。域名,http / https或没有最终斜杠)

2 个答案:

答案 0 :(得分:4)

使用此正则表达式:

preg_match("/https?:\/\/www.imdb\..*?\/title\/tt\d+\/?/", $html, $matches);

您想要的网址位于$matches[0]

这是正则表达式的意思,一点一点地分解:

  • / =>启动正则表达式
  • https? =>文字http后跟可选的s
  • :\/\/www.imdb\. =>文字://www.imdb.
  • .*?\/ =>在斜线之前匹配可能的最短字符串,然后斜杠;将匹配域名结尾,无论它是什么(comco.ukes等等......)以及它后面的第一个斜杠
  • title\/ =>文字title/
  • tt\d+ =>文字tt后跟至少一个数字(这是一个贪婪的匹配,所以它将匹配它可以连续的最多数字);将以您提供的格式匹配ID
  • \/? =>可选的最终/
  • / =>结束正则表达式

答案 1 :(得分:0)

这样可以很好地工作,它也会匹配URL的开头//这是一个独立于协议的“方案”。

(https?:|//)[^\s"]+