我的下面的代码从网站的搜索结果中检索一系列图像,并检索相应的age
数据。它工作正常,但我得到一个图像列表,后面是age
字段中的信息列表。
img img img img age age age age
等等。
如何合并这些内容,以便我可以将它们集合显示:img age
img age
img age
<?php
error_reporting(-1);
$html = new DOMDocument();
@$html->loadHtmlFile('http://www.site.com/searchresults.html');
$xpath = new DOMXPath( $html );
$nodelist = $xpath->query( "//div[@class='age']" );
$tags = $html->getElementsByTagName('img');
foreach ($tags as $tag) {
$image = $tag->getAttribute('src');
echo '<img src='. $image .' alt="image" ><br>';
}
foreach ($nodelist as $n)
{
echo $n->nodeValue."<br>";
}
?>
示例页面,我想从img
中提取title
来源<div class="age" title="30 usa">
数据:
<div id="sr-15763292" class="search-result">
<div class="thumb-wrapper">
<a class="bioLink" href="http://www.site.com/user/" title="View user"><img src="http://www.site.com/img/15763292.jpg" class="thumb" alt="user" width="140" height="105"></a>
<p class="status"><a href="http://www.site.com/user/" >Online</a></p>
</div>
<div class="rating">
<div class="rating-stars rating4"></div>
</div>
<div class="age" title="30 usa">
<p>30</p>
<p class="gender m">m</p>
<p>USA</p>
</div>
<div>
<p class="headline">Hello there.</p>
</div>
</div>
答案 0 :(得分:0)
如果我们不知道HTML是什么样的话,很难回答!假设它看起来像这样
<div class="age"><p>21</p>
<img src="a.jpg" />
</div>
<div class="age"><p>51</p>
<img src="b.jpg" />
</div>
你需要找到每个div,然后在每个div中找到图像。即使只有一个结果,getElementsByTagName()也会给你一个列表,所以使用item()获取第一个结果。
error_reporting(-1);
$html = new DOMDocument();
@$html->loadHtmlFile('results.html');
$xpath = new DOMXPath( $html );
$nodelist = $xpath->query( "//div[@class='age']" );
foreach ($nodelist as $node) {
$tags = $node->getElementsByTagName('img');
$image = $tags->item(0)->getAttribute('src');
echo '<img src="'. $image .'" alt="image" ><br>';
echo $node->textContent . '<br>';
}
如果HTML是这样的
<div class="age"><p>21</p></div><img src="a.jpg" />
你可以尝试
$node->nextSibling()
作为HTML的一般点,我想如何从A到B?前进?向后?到父母,到下一个节点再向下......?