PHP 简单 HTML DOM 解析器 - 循环
PHP Simple HTML DOM Parser - loop
我开始玩 Simple 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
)
它从数据class ul.dane接收数据,但只有1条记录,我该如何获取页面上的所有内容?
我知道我在某处遗漏了一个循环,但我无法找到哪里
你可能想要
- 找到所有
ul.dane
个元素
- 在每个 ul 中,搜索
li
个元素
- 在每一里内,搜索
div.name
和 div.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;
}
}
我开始玩 Simple 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
)
它从数据class ul.dane接收数据,但只有1条记录,我该如何获取页面上的所有内容?
我知道我在某处遗漏了一个循环,但我无法找到哪里
你可能想要
- 找到所有
ul.dane
个元素 - 在每个 ul 中,搜索
li
个元素 - 在每一里内,搜索
div.name
和div.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;
}
}