如何在simple_html_dom php中经过一定量的循环后停止foreach循环

时间:2014-03-26 16:06:21

标签: php loops foreach simple-html-dom

我这样做是因为当我使用xml解析器时,但是当我使用simple_html_dom从页面中提取数据时,它似乎无法正常工作。

这是我现在的代码。

    $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);

所以这是视频网站之一,其中有许多视频包含在class =“videoblock”中,所以我设置为使用videoblock类找到li元素并循环来提取它们的数据。

但是因为可以有20个视频(带有视频块类的li元素),我想限制循环仅为3并在此之后停止。

所以不应该

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

一旦得到第3号就停止它。或者在使用simple_html_dom提取数据时是否有所不同?在函数中使用它,我使用simplexml_load_file获取数据。它可以工作。

1 个答案:

答案 0 :(得分:4)

您实际上并未增加$counter变量,因此它始终保持0

如果您想增加它,请使用以下内容:

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

虽然您可能需要(请参阅manual

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