PHP Simple HTML DOM Parser -
i started use php simple html dom parser.
now i'm trying extract elements surrounded <b>
-tag inclduing </b>
exsiting html document. works fine
foreach($html->find('b') $q) echo $q;
how can achieve show elements surrounded <b>
,</b>
-tags followed <span class="marked">
?
update: i've used firebug css path elements. looks this:
foreach ($html->find('html body div#wrapper table.desc tbody tr td div span.marked') $x) foreach ($x->find('html body div#wrapper table.desc tbody tr td table.split tbody tr td b') $d) echo $d;
but won't work... ideas?
update:
to clarify question here sample tr of document starting table , ending table tags.
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="desc"> <tr> <th width="25%" scope="col"><div align="center">1</div></th> <th width="50" scope="col"><div align="center">2</div></th> <th width="10%" scope="col"><div align="center">3</div></th> <th width="15%" scope="col"><div align="center">4</div></th> </tr> <tr> <td valign="top" bgcolor="#e9e9e9"><div style="text-align: center; font-weight: bold; margin-top: 2px"> 1 </div></td> <td> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="split"> <tr> <td> <b> element extract</b></td> </tr> <tr> <td> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="split"> <tr> <td width="15px" valign="top"> </td> <td width="15px" valign="top"> <div style="background-color:green ;color:#ffffff; text-align:center;padding-bottom: 1px"> 1 </div> </td> <td> abed </td> </tr> <tr> <td width="15px" valign="top"> </td> <td width="15px" valign="top"> <div style="background-color:green ;color:#ffffff; text-align:center;padding-bottom: 1px"> 2 </div> </td> <td> ddee </td> </tr> <tr> <td width="15px" valign="top"> </td> <td width="15px" valign="top"> <div style="background-color:green ;color:#ffffff; text-align:center;padding-bottom: 1px"> 3 </div> </td> <td> xdef </td> </tr> <tr> <td width="15px" valign="top"> </td> <td width="15px" valign="top"> <div style="background-color:green ;color:#ffffff; text-align:center;padding-bottom: 1px"> 4 </div> </td> <td> abbcc </td> </tr> <tr> <td width="15px" valign="top"> </td> <td width="15px" valign="top"> <div style="background-color:green ;color:#ffffff; text-align:center;padding-bottom: 1px"> 5 </div> </td> <td> ab </td> </tr> <tr> <td width="15px" valign="top"> </td> <td width="15px" valign="top"> <div style="background-color:green ;color:#ffffff; text-align:center;padding-bottom: 1px"> 6 </div> </td> <td> e1 </td> </tr> </table> </td> </tr> </table> </td> <td valign="top"><div style="text-align: center"> <span class="marked">marked</span> </div></td> <td valign="top"><div style="text-align: center"> </div></td> </tr> </table>
try following css selector
b > span.marked
that return span though, have $e->parent()
b element.
also see best methods parse html alternatives simplehtmldom
edit after update:
your browser modify dom. if @ markup, see there no tbody elements. yet firebug gives you
html body div#wrapper table.desc tbody tr td div span.marked' html body div#wrapper table.desc tbody tr td table.split tbody tr td b'
also, question not match queries. asked how find
elements surrounded
<b>,</b>
-tags followed<span class="marked">
that can read either mean
<b><span class="marked">foo</span></b>
or
<b><element>foo</element></b><span class="marked">foo</span>
for first use child combinator have shown earlier. second, use adjacent sibling combinator
b + span.marked
to span , use $e->prev_sibling()
return previous sibling of element (or null if not found).
however, in shown markup, there neither nor. there div span child having marked class
<div style="text-align: center"> <span class="marked">marked</span>
if want match, it's child combinator again. of course, have change b div.
Comments
Post a Comment