挑选内部元素而不是ul本身

时间:2014-06-27 03:28:41

标签: php simple-html-dom

这是php代码:

include_once('simple_html_dom.php');
$html = file_get_html('URL');
$elem = $html->find('ul[id=members-list]', 0);
echo $elem;

我希望能够选择UL内部的元素本身,而不是ul本身。 html如下:

<ul id="members-list">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>

所以当我echo $elem时,它会返回包含的ul。我想把它拿回来:

    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>

4 个答案:

答案 0 :(得分:1)

您可以使用:

$('#members-list li')

迭代它们:

$('#members-list li').each(function(){
   console.log(this);//object of current li
});

答案 1 :(得分:1)

您忘了使用children()方法。考虑这个例子:

$ul = $html->find('ul[id="members-list"]', 0)->children();
foreach($ul as $li) {
    echo $li;
}

manual

中说明

<强> How to traverse the DOM tree? -> Traverse the DOM Tree

<强> mixed$e->children ( [int $index] ) Returns the Nth child object if index is set, otherwise return an array of children.

或者更简单的方法: ->innertext 魔法属性

$ul = $html->find('ul[id="members-list"]', 0);
echo $ul->innertext;

答案 2 :(得分:1)

看看这个,这也会打印 li 标签内的值

<?php

 $html = file_get_contents('2.html');
 $dom = new DOMDocument;
 $dom->loadHTML($html);
 foreach ($dom->getElementsByTagName('ul') as $node) {
       foreach($node->childNodes as $childNode){
           echo $childNode->nodeValue;
       }
 }
?>

答案 3 :(得分:0)

您必须对所选的.html()元素使用ul

include_once('simple_html_dom.php');
$html = file_get_html('URL');
$elem = $html->find('ul[id=members-list]', 0)->html();
                                               ^-- to get all child elements with tag
echo $elem;