2013-03-26 21 views
1

我得到一個足球頁面,每頁末尾都有一個數字。/1/=第1周,/ 2/=第2周等等。本賽季有36周。第4周剛剛完成,因此該網址在第5周及以後不存在。第五週的網址將在下週有效,但現在,它給了我404錯誤。檢查一組URL是否存在以及哪一個是最新的

我使用下面的代碼來檢查一週(頁面URL)是否存在。

$url = 'http://fantasy.mlssoccer.com/entry/13191/event-history/4/'; 
$html = @file_get_html($url); 

if($html==FALSE) 
{ 
    echo 'error'; 
    //and do nothing 
} 
else 
{ 
    echo 'success'; 
    //and do some stuff here 
} 

我期待着得到一個簡單的數字是最新的一週。在這種情況下,應該是4,但下週應該是5.

這樣做的最好或最快的方法是什麼?如果可能的話,我不希望我的網頁花時間檢查。

回答

1

像這樣的東西應該會工作,假設URL結構不變。

$base = "http://fantasy.mlssoccer.com/entry/13191/event-history/"; 
for($n = 1; $n <= 36; ++$n) { 
    if(file_get_html($base. (string) $n) == false) { 
     // if file_get_html returns false, then the most recent week is n - 1 (the week before) 
     $most_recent_week = (int) $n - 1; 
     break; 
    } 
} 
+0

我只是得到'警告:的file_get_contents(http://fantasy.mlssoccer.com/entry/13191/event-history/5):未能打開流:HTTP請求失敗!在第70行的simple_html_dom.php中找不到HTTP/1.1 404。有任何想法嗎? – Cully 2013-03-26 03:35:35

+0

其實它的工作原理......我只是在file_get_html的開頭添加@來抑制錯誤信息。它應該是錯誤的,但只是不顯示錯誤消息。謝謝! – Cully 2013-03-26 03:38:14

+0

當然沒有問題,我現在也測試了它,我得到了期望的結果4 :) – 2013-03-26 03:42:51

1

也許使用以下內容會更合適。

$weekNumber = date("W") - offset; 

凡偏移用於從歷年的開始偏移賽季的開始。

這會修改你的URL行:

$url = 'http://fantasy.mlssoccer.com/entry/13191/event-history/' . $weekNumber . '/' 
+0

理論上這應該工作,但不幸的是不在我的情況。我想我還不夠清楚。大多數Gameweeks彼此相隔7天,但奇怪的是相隔4-9天,因此他們會分手。這個URL總是以「周而復始」而不是「周」爲單位......他們最終還是會有1/1。你給了我一個好主意,因爲檢查每個網址是非常緩慢的。我可能只是手動輸入36個最後期限,並使用類似於您提到的內容。謝謝! – Cully 2013-03-26 03:42:02

相關問題