正如标题所说我试图找到具有特定类的元素的第一个孩子,这就是我想要做的事情:
更新:我添加了格式。我还想到了如何到达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>
&#13;
最佳解决方案:
$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>";
}
&#13;
答案 0 :(得分:0)
如果你想找到tr体,而不仅仅是使用table和tbody元素。 find总是返回一个数组,你的if语句是分号。
$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);
如果不是你的问题。或者它不起作用请评论。我还没有测试过。