我这样做是因为当我使用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获取数据。它可以工作。
答案 0 :(得分:4)
您实际上并未增加$counter
变量,因此它始终保持0
。
如果您想增加它,请使用以下内容:
if ($counter++ >= 3) break;
虽然您可能需要(请参阅manual)
if (++$counter >= 3) break; // first increment, return value and then compare