PHP Simple HTML DOM Parser返回所有列表项

时间:2015-01-26 21:07:26

标签: php parsing dom

我目前正在使用PHP Simple HTML DOM Parser试图抓取一个网站。以下是我到目前为止的情况:

$html = file_get_html('https://www.example.com');

// Find all article blocks
foreach($html->find('.plan') as $article) {
    $item['title']     = $article->find('.price', 0)->plaintext;
    $item['intro']   = $article->find('li', 0)->plaintext;
    $item['details'] = $article->find('.button', 0)->href;
    $articles[] = $item;
}

print_r($articles);

以上工作正常,但如果存在多个<li>,则只返回第一个遗漏的<li>

有没有办法可以获得所有列表项?

1 个答案:

答案 0 :(得分:1)

使用find-function中的第二个属性,可以定义应返回的结果的第n个元素。在您的示例中,$article->find('li',0)为您提供匹配元素的索引0(因此第一个)的li元素。

如果您想要所有<li>元素,请尝试以下操作:

$html = file_get_html('https://www.example.com');

// Find all article blocks
foreach($html->find('.plan') as $article) {
    $item['title']   = $article->find('.price', 0)->plaintext;
    $item['intro']   = array(); //define as array
    foreach ($article->find('li') as $li) { //get all <li>-elements as array
        $item['intro'][] = $li->plaintext; //add the plaintext of each single <li> element as new position to the $item['intro'] array
    }
    $item['details'] = $article->find('.button', 0)->href;
    $articles[] = $item;
}

print_r($articles);