标题上说我想在这里找到一个特定类的元素的第一个孩子,我想做的是:
更新:我添加了格式。我也想到如何到达tbody。但是,归根结底,我要做的是检查tbody中的每个元素,如果它们每个元素都等于" - "。那我将如何实现?我会将DOM对象转换为字符串吗?是什么有效的方法。
更新2:我找到了一个优雅的解决方案,该解决方案已更新为代码。问题仍然存在:检查是否有整数的最佳方法是什么?我是否只将每个元素转换为字符串,然后执行strpos条件?
更新3:没关系,我发现了它。包括下面的解决方案。我不得不进一步进入桌子主体,以选择表行,然后循环通过它们。
foreach($html->find('div[class=compareSkillsOuter clear] section[class=playerStats] div[class=tiledBlueFrame] div[class=tableWrap] table[class=headerBgLeft] tbody tr') as $element){
if($position = strrpos($element, '--');
if($position !== false){
echo "String found";
}
else{
echo "String not found";
}
}
格式:
<div class="compareSkillsOuter clear">
<section class="playerStats">
<div class="tiledBlueFrame">
<div class="tl corner"></div>
<div class="tr corner"></div>
<div class="bl corner"></div>
<div class="br corner"></div>
<div class="tableWrap">
<table class="headerBgLeft">
<thead>
<tr>
<th class="alignleft">Rank</th>
<th class="alignleft">Total XP</th>
<th class="alignleft">Level</th>
</tr>
</thead>
<tbody>
<tr >
<td class="alignleft"><a href="#">1,700,012</a></td>
<td class="alignleft"><a href="#">3,290</a></td>
<td class="playerWinLeft alignleft"><div class="relative"><a href="#">55</a></div></td>
</tr>
<tr class=oddRow>
<td class="alignleft"><a href="#">--</a></td>
<td class="alignleft"><a href="#">--</a></td>
<td class="alignleft"><a href="#">--</a></td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
</div>
最佳解决方案:
$data = $html->find("table[class=headerBgLeft] tbody",0);
$data1 = $data->find("tr td a");
$statistics = Array();
//echo $data1[1]->plaintext;
foreach($data1 as $tr)
{
//store each
echo "$tr 1<br>";
}
如果您想找到TR主体,而不仅仅是使用表格和tbody元素。查找始终返回数组,如果语句与Semicolon一起。
$data= $html->find("table[class=headerBgLeft] tbody");
$data1=$data->find("td tr");
foreach($data1 as $ed)
{
if($ed->innertext=="--")
echo "String is found";
else
echo "String is not found";
}
如果您只需要找到tbody中的两个破折号,并且它们的位置固定意味着它们始终处于第二个tr中。您可以使用
$data1=$data->find("td tr",1);
如果不是您的问题。否则它不起作用,请发表评论。我尚未测试。