我必须从脏的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或没有最终斜杠)
答案 0 :(得分:4)
使用此正则表达式:
preg_match("/https?:\/\/www.imdb\..*?\/title\/tt\d+\/?/", $html, $matches);
您想要的网址位于$matches[0]
。
这是正则表达式的意思,一点一点地分解:
/
=>启动正则表达式https?
=>文字http
后跟可选的s
:\/\/www.imdb\.
=>文字://www.imdb.
.*?\/
=>在斜线之前匹配可能的最短字符串,然后斜杠;将匹配域名结尾,无论它是什么(com
,co.uk
,es
等等......)以及它后面的第一个斜杠title\/
=>文字title/
tt\d+
=>文字tt
后跟至少一个数字(这是一个贪婪的匹配,所以它将匹配它可以连续的最多数字);将以您提供的格式匹配ID \/?
=>可选的最终/
/
=>结束正则表达式答案 1 :(得分:0)
这样可以很好地工作,它也会匹配URL的开头//这是一个独立于协议的“方案”。
(https?:|//)[^\s"]+