2015-10-18 85 views
0
$some_link = 'http://www.example.com'; 
$abc = 'killer'; 
$bcd = 'awsome'; 
$cde = 'qwerty'; 

$dom = new DOMDocument; 
$dom->preserveWhiteSpace = false; 
@$dom->loadHTMLFile($some_link); 

$html = getTags($dom, $abc, $bcd, $cde); 
echo $html; 

function getTags($dom, $abc, $bcd, $cde){ 
    $html = ''; 
    $domxpath = new DOMXPath($dom); 
    $newDom = new DOMDocument; 
    $newDom->formatOutput = true; 

    $defffff = $domxpath->query("//$abc" . '[@' . $bcd . "='$cde']"); 

    // since above returns DomNodeList Object 
    // converting to string(html) 
    $i = 0; 
    while($myItem = $defffff->item($i++)){ 
     $node = $newDom->importNode($myItem, true); // import node 
     $newDom->appendChild($node);     // append node 
    } 
    $html = $newDom->saveHTML(); 
    return $html; 
} 

?> 

这是整个代码。它连续返回多个结果,现在我想要的只是结果no.1和no.5。我该怎么做?DOM Xpath仅获得所需结果

我是新来的DOM,尝试了几件事情,但没有成功。由于提前

回答

1

更改此

$i = 0; 
while($myItem = $defffff->item($i++)){ 
    $node = $newDom->importNode($myItem, true); // import node 
    $newDom->appendChild($node);     // append node 
} 

到这一点,为了append只有选择的节点

$i = 0; 
while($myItem = $defffff->item($i++)){ 
    if ($i==0 or $i==4){ 
     $node = $newDom->importNode($myItem, true); // import node 
     $newDom->appendChild($node);     // append node 
    } 
} 

或你,如果你知道你想要已经索引,你可以做到这一点

$myIndexes = array (0,4); 
foreach ($myIndexes as $i){ 
    $myItem = $defffff->item($i++); 
    $node = $newDom->importNode($myItem, true); // import node 
    $newDom->appendChild($node);     // append node 
} 
+0

PERFECT !!!非常感谢你 – koca101

+0

@ koca101欢迎你! –