2012-01-30 106 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