2013-07-15 39 views

回答

7

随着XPath您可以获取所有相似图片:

$xpath = new DOMXPath($dom); 
$list = $xpath->query('//img'); 

然后你只遍历第一个五年限制的结果。

for ($i = 0, $n = min(5, $list->length); $i < $n; ++$i) { 
    $node = $list->item(0); 
} 

由于其expression language XPath是非常灵活的。但是,在这种情况下,您可能不需要所有这些权力,并且简单的$list = $dom->getElementsByTagName('img')将产生相同的结果集。

+0

真棒破解与'min(5,$ list-> length)'! – jQuery00

+0

@ jQuery00这是一个“黑客”?这更像是“良好的编程习惯”。 –

+0

@JonathonReinhart是的!只是我的英文不好,有时会错误地表达我的想法 – jQuery00

1

您可以使用getElementsByTagName建立和图像阵列:

$dom = new DOMDocument(); 
$dom->loadHTML($string); 
$images = $dom->getElementsByTagName('img'); 
$result = array(); 
for ($i=0; $i<5; $i++){ 
    $node = $images->item($i); 
    if (is_object($node)){ 
     $result[] = $node->ownerDocument->saveXML($node); 
    } 
} 
相关问题