需要使用Simple HTML DOM Parser遍历DOM树的帮助。如果有人能够第二次看看它是如何工作的,那么知识渊博的PHP编码员如果弄明白的话应该快速弄明白。我被困的地方是在朋友的俄罗斯篮球网站上从div获取文章。例如,这是博客div的样子:
<div id='columnsList'><div class='item'>
<div class='title'><a href='/ru/columns/1'>Колонка Римантаса Григаса</a></div>
<div class='img'> <img src='/files/columns/grigas.jpg'></div>
<div class='news'>
<a href='/ru/news/3174'>Римантас Григас: о пути на Евробаскет (0)</a>
<a href='/ru/news/1486'>Римантас Григас: об уходе из УГМК и о ближайших планах (1)</a>
<a href='/ru/news/731'>О горниле «Финала восьми» Евролиги (0)</a>
<a href='/ru/news/421'>О новом назначении и о сборной Украины (0)</a>
<a href='/ru/news/299'>О настоящем примере для подражания (0)</a>
</div><div style='clear:left;'></div>
</div>
<div class='item'>
<div class='title'><a href='/ru/columns/2'>Колонка Кирилла Натяжко</a></div>
<div class='img'> <img src='/files/columns/nati.jpg'> </div>
<div class='news'>
<a href='/ru/news/3618'>Кирилл Натяжко: "Хорватов мы не боимся" (2)</a>
<a href='/ru/news/3113'>Кирилл Натяжко: "Необоснованная критика подарила мне дополнительную мотивацию" (1)</a>
<a href='/ru/news/2454'>Кирилл Натяжко: "Мне нечего бояться, пускай лучше боятся меня!" (6)</a>
<a href='/ru/news/325'>Доброе утро, страна! (1)</a>
</div><div style='clear:left;'></div>
</div>
<div class='news'>
//More divs and links
这就是我可以拉出单个'a'链接并显示它们的方法,但我想要做的就是获取所有这些链接的div标题,基本上将它们分类而不是连续排列。我无法弄清楚如何在foreach循环中做到这一点。
foreach ($html->find('div[class=item] a[href*=news]') as $col){
echo $col.'<br>';
}
我尝试添加第一个回声:
echo $col->parent()->prev_sibling()->prev_sibling()->a;
那应该回到div'新闻',然后是div'img'再次达到div'title'。那应该得到第一个div = title的链接。但我一无所获。有没有办法做到这一点?
答案 0 :(得分:2)
试试这个:
$output = array();
foreach($html->find('div[class=item]' as $item) {
$title = $item->find('div[class=title] a', 0)->innertext;
$output[$title] = array();
foreach($item->find('div[class=news] a') as $link) {
$output[$title][] = $link->innertext;
}
}
答案 1 :(得分:0)
这是实现它的方法,不使用数组!
foreach ($html->find('div[class=item]') as $item){
echo $item->children(0)->plaintext;
foreach ($item->find('a[href*=news]') as $col){
echo $col.'<br>';
}
}
得到了预期的结果!