2012-01-30 92 views

回答

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

我建议用正则表达式多选一点。 'http://www.imdb.spoofeddnsat.example.com /.*'不是很好的数据来源。请改用'/ https?:\/\/www \ .imdb \ .com?(\。[a-z] {2})?\ /.../'。 – ghoti 2012-01-31 06:02:30

+0

哈哈。我会一直看到来自我银行的电子邮件“安全警告”。 – Graham 2012-01-31 06:08:32

0

这将很好地工作,它也将匹配URL的开始//这是独立于协议'方案'。

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

“//”不是URL的有效开始。 – Graham 2012-01-31 06:05:13

+2

恩,是的,这不值得投票。 http://paulirish.com/2010/the-protocol-relative-url/ – 2012-01-31 06:27:16

+0

我的天啊!我不知道!谢谢!投票改变了。 :-) – Graham 2012-01-31 06:51:09