2017-03-08 2 views
-1

Ich verwende html dom ParserHTML DOM Parser

i HTML-Code wie diese haben und wollen mit Klasse blau

<html> 
<div id="rhy"> 
<h2 class="text">Text1</h2> 
<ul class="blue"> 
<li>1</li> 
<li>2</li> 
<li>3</li> 
</ul> 
<h2 class="text">Text2</h2> 
<ul class="blue"> 
<li>4</li> 
<li class="z">5</li> 
<li>6</li> 
</ul> 
</div> 
</html> 

und ich habe alle LI von der ersten UL analysieren PHP-Code

$res = ""; 
foreach($html->find('#rhy -> .blue -> li[!class]') as $element) 
{ 
    $res = $res . $element; 
} 
echo $res; 

dieser Code gibt

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

, aber ich will

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

haben ich werde glücklich sein, wenn jemand weiß, wie mein Problem

Antwort

0

Sie möchten nur zuerst ul alle li Elemente. Sie können es wie unten tun: -

$res = ""; 
foreach($html->find('.blue->li',0) as $element) 
{ 
    $res = $res . $element; 
} 
echo $res; 

Ausgang: - <li>1</li><li>2</li><li>3</li>

+0

Danke Mann! Es funktioniert – hivokas

+0

@hivokas froh, Ihnen zu helfen –

+0

markiert, danke! – hivokas

0

Nun gibt

<html> 
<div id="rhy"> 
<h2 class="text">Text1</h2> 
<ul id ="yourid" class="blue"> 
<li>1</li> 
<li>2</li> 
<li>3</li> 
</ul> 
<h2 class="text">Text2</h2> 
<ul class="blue"> 
<li>4</li> 
<li class="z">5</li> 
<li>6</li> 
</ul> 
</div> 
</html> 

Und Ihre PHP

$res = ""; 
foreach($html->find('#rhy -> #yourid -> li[!class]') as $element) 
{ 
    $res = $res . $element; 
} 
echo $res; 
tun können, lösen
+0

dieser HTML-Code ist nicht auf meiner Website, so kann ich nicht bearbeiten – hivokas

0
foreach($html->find('ul', 0) as $ul) 
{ 
     foreach($ul->find('li') as $li) 
     { 
      $ret = $li->find('.blue'); 
     } 
} 
echo $ret 

Dies sollten Sie all li des ersten ul mit der Klasse blau.

+0

Keine Notwendigkeit von zwei 'foreach()' überprüfen andere Antwort, und Sie werden eine einfache Lösung erhalten –

+0

Yeah machte Sinn, nachdem Sie die Bearbeitung zu Ihrer Antwort gemacht haben. –