2014-03-26 105 views
1

我已經這樣做了,所以當我使用XML解析器,但它似乎不工作時,我使用simple_html_dom拉從頁面中的數據。如何停止從simple_html_dom循環某些ammoung後foreach循環php

這是我現在的代碼。

$counter = 0; 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
    curl_setopt($curl, CURLOPT_URL, 'the url of the website'); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); 
    $str = curl_exec($curl); 
    curl_close($curl); 

    $feedURL = str_get_html($str); 

      foreach($feedURL->find('li[class="videoblock"]') as $video) { 
       $get_title = $video->find('span[class="title"]', 0); 
       $title = $get_title->plaintext; 
       echo $title . '<br/>'; 
      if ($counter+1 >= 3) break; 
      } 

    $feedURL->clear(); 
    unset($feedURL); 

所以它的視頻網站,其中有許多影片包裹類=「videoblock」,所以我設置爲找到videoblock類和循環li元素拉他們的數據的foreach之一。

但是,因爲可以有20個視頻(li元素與videoblock類),我想限制循環只有3,然後停止。

所以不宜

if ($counter+1 >= 3) break; 

停止它一旦獲得對數3或者是不同與simple_html_dom獲取數據時?在我使用simplexml_load_file獲取數據的函數中使用它。

回答

4

您實際上並沒有增加$counter變量,因此它總是保持0

如果你想增加它,使用這樣的:

if ($counter++ >= 3) break; 

雖然在特定情況下,你可能需要(見manual):

if (++$counter >= 3) break; // first increment, return value and then compare 
+0

這工作,但爲什麼是$計數器++不同於$ counter + 1,如果我使用$ counter ++> = 3,它會得到4個視頻,而不是3,所以我應該設置啓動計數器爲$ counter = 1或設置$ counter ++> = 2來獲得3個視頻。這就是爲什麼我設置$ counter + 1 –

+0

@AleksandarĐorđević我剛剛編輯了一個鏈接到手冊,在你的情況下,你需要增加,然後比較。 '++'操作變量,'+ 1'不修改變量,你需要手動賦值:'$ counter = $ counter + 1'。 – jeroen

+1

是的,是的,我在你的文章和編輯之間寫了一個答案。現在我明白了,不知道預增值和後增值之間是否有區別。感謝您提供非常快速的答覆。但是,stackoverflow不允許我接受你的答案呢。我稍後回來將其標記爲已接受。 –