【发布时间】:2017-04-07 22:10:00
【问题描述】:
正如标题所说,我试图找到具有特定类的元素的第一个子元素,这就是我想做的:
更新:我添加了格式。我还想出了如何到达身体。但归根结底,我要做的是检查 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>";
}
【问题讨论】:
-
好的,现在我有一个问题要问你。我们是否神奇地知道您的 DOM 结构是什么样的?输出是什么,desired 输出是什么?红地毯在哪里?
-
@Xorifelse 哦,谢谢你提醒我。我已经在代码中添加了它。还修改了我想要做什么的描述。 tbody 包含整数值。如果它为空,那么它们默认为“--”。如果每个都包含一个整数,我将如何检查 tbody?