2014-06-27 35 views
0

這是PHP代碼:裏面挑UL的元素不是在UL本身

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> 
+0

這是爲什麼用curl和jquery標記的問題? – Anonymous

回答

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; 
1

您可以使用:

$('#members-list li') 

超過他們迭代:

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

謝謝!但這是jquery如何選擇它與簡單的HTML DOM? – cppit

+0

根據你的代碼,你可以使用'$ elem = $ html-> find('ul [id = members-list li]',0);' –

+0

沒有工作,這個$ html-> find('ul [id = members-list]',0);作品,但添加李,它不返回 – cppit

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; 
+0

我試圖不採取ul。 :) – cppit

+0

但這將返回什麼是內部ul而不是ul –

+0

好的會嘗試謝謝你 – cppit

1

看一看這個,這也將打印內部變量的值

<?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; 
     } 
} 
?>