Je vais faire un tour en grattant une page avec simple_html_dom. Sur la page, je racle, il y a une table avec des rangées, et à l'intérieur, un tas de cellules. Je veux avoir des choses dans la troisième cellule de chaque rangée. La cellule en question n'a pas de classe.Pourquoi ce sélecteur simple_html_dom ne fonctionne-t-il pas lorsqu'il est utilisé dans son intégralité, mais pas lorsqu'il est fragmenté en sélecteurs plus petits?
<tr class="thisrow">
<td class="firstcell"><strong>1st</strong></td>
<td class="secondcell">nothing in here</td>
<td><strong>blah blah</strong></td>
<td>something else</td>
</tr>
Donc, pour commencer, je suis allé directement à la troisième cellule:
foreach($html->find('tr.thisrow td:nth-child(3)') as $thirdcell) {
echo $thirdcell->innertext // this works, no problem!
}
Mais je me suis aperçu que je avais besoin des données dans une autre cellule de la ligne (td.firstcell). Cette cellule a une classe, donc je pensais mieux à boucle à travers les lignes, puis utilisez les sélecteurs dans le contexte de cette ligne:
foreach($html->find('tr.thisrow') as $row) {
$thirdcell = $row->find('td:nth-child(3)');
echo $thirdcell; // this is now empty
$firstcell = $row->find('td.firstcell');
echo $firstcell; // this works!
}
Donc, comme vous pouvez le voir, mon sélecteur nième enfant tout à coup dans le contexte de la La boucle de ligne ne fonctionne pas. Qu'est-ce que je rate?
pourriez-vous ajouter le code html cible pour le test? – smoqadam
@smoqadam, bien sûr, merci, je l'ai ajouté. – willdanceforfun