Как получить только дочерние элементы (без рекурсивного поиска) ? (аналог children(selector) из jquery?) #184
Open
Description
Представим ситуацию, у нас таблица, а внутри её ячеек есть ещё таблицы.
$table = new \DiDom\Element('table');
$table->setInnerHtml('
<tr>
<td>Строка 1 Ячейка 1</td>
<td>Строка 1 Ячейка 2</td>
<td>
<table>
<tr>
<td>Субтаблица: Строка 1 Ячейка 1</td>
<td>Субтаблица: Строка 1 Ячейка 2</td>
</tr>
<tr>
<td>Субтаблица: Строка 2 Ячейка 1</td>
<td>Субтаблица: Строка 2 Ячейка 2</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>Строка 2 Ячейка 1</td>
<td>Строка 2 Ячейка 2</td>
</tr>
');
Как нам получить только элементы <td>
из самого элемента $table
, но не из его дочерних элементов?
Поскольку метод find('tr > td')
даёт нам все вложенные элементы <td>
$tds = $table->find('tr > td');
$result = [];
foreach ($tds as $td) {
$result[] = $td->text();
}
$result:
Array
(
[0] => Строка 1 Ячейка 1
[1] => Строка 1 Ячейка 2
[2] =>
Субтаблица: Строка 1 Ячейка 1
Субтаблица: Строка 1 Ячейка 2
Субтаблица: Строка 2 Ячейка 1
Субтаблица: Строка 2 Ячейка 2
[3] => Субтаблица: Строка 1 Ячейка 1
[4] => Субтаблица: Строка 1 Ячейка 2
[5] => Субтаблица: Строка 2 Ячейка 1
[6] => Субтаблица: Строка 2 Ячейка 2
[7] => Строка 2 Ячейка 1
[8] => Строка 2 Ячейка 2
)
А нужно:
Array
(
[0] => Строка 1 Ячейка 1
[1] => Строка 1 Ячейка 2
[2] =>
Субтаблица: Строка 1 Ячейка 1
Субтаблица: Строка 1 Ячейка 2
Субтаблица: Строка 2 Ячейка 1
Субтаблица: Строка 2 Ячейка 2
[3] => Строка 2 Ячейка 1
[4] => Строка 2 Ячейка 2
)
Metadata
Assignees
Labels
No labels