【问题标题】:PHP Simple HTML DOM Parser - loopPHP 简单 HTML DOM 解析器 - 循环
【发布时间】:2018-03-05 18:05:14
【问题描述】:

我开始玩简单的 HTML Doom Parser,但遇到了一些麻烦:

HTML代码如下:

<div class="players">
    <ul class="dane">
        <li>
            <div class="name">Messi</div>
            <div class="value">Barcelona</div>
        </li>
        <li>
            <div class="name">Ronaldo</div>
            <div class="value">Madryt</div>
        </li>
    </ul>
</div>

<div class="clubs">
    <ul class="dane">
        <li>
            <div class="name">Barcelona</div>
            <div class="value">Hiszpania</div>
        </li>
        <li>
            <div class="name">Madryt</div>
            <div class="value">Hiszpania</div>
        </li>
    </ul>
</div>

<div class="trenerzy">
    <ul class="dane">
        <li>
            <div class="name">Ernesto Valverde</div>
            <div class="value">Barcelona</div>
        </li>
        <li>
            <div class="name">Madryt</div>
            <div class="value">Zidane</div>
        </li>
    </ul>
</div>

我的 PHP 代码:

include_once('simple_html_dom.php');
$html = file_get_html('http://');

$articles = array();
foreach($html->find('ul.dane') as $article) {
    $item['name']     = $article->find('div.name',0)->plaintext;
    $item['value']    = $article->find('div.value',0)->plaintext;
    $articles[] = $item;
}

print_r($articles);

它收到的数据是:

Array
(
    [0] => Array
        (
            [name] =>                   Messi               
            [value] =>                      Barcelona               
        )

    [1] => Array
        (
            [name] =>                   Barcelona               
            [value] =>                      Hiszpania               
        )

    [2] => Array
        (
            [name] =>                   Ernesto Valverde                
            [value] =>                      Barcelona               
        )

它从数据类 ul.dane 接收数据但只有 1 条记录,我该如何获取页面上的所有内容?

我知道我在某处遗漏了一个循环,但我很难找到哪里

【问题讨论】:

    标签: php parsing html-parsing simple-html-dom html-parser


    【解决方案1】:

    你可能想要

    1. 查找所有ul.dane 元素
    2. 在每个ul中,搜索li元素
    3. 在每个 li 中,搜索 div.namediv.value 元素

    在这种情况下,您的代码的问题是您忘记在每个 ul 中找到每个 li 元素,这将是第 2 步。试试这个:

    foreach($html->find('ul.dane') as $ul) {
        foreach($ul->find('li') as $article){
            $item['name']     = $article->find('div.name',0)->plaintext;
            $item['value']    = $article->find('div.value',0)->plaintext;
            $articles[] = $item;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 2014-01-15
      • 2011-08-27
      • 2015-02-14
      • 1970-01-01
      相关资源
      最近更新 更多