Определение местоположения TD по TH, domCrawler - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь очистить тег table td, но сначала мне нужно проверить th. Например, допустим, структура таблицы похожа на приведенную ниже.

<tbody>
  <tr>
      <th>color</th>
      <td>red</td>
  </tr>
  <tr>
      <th>price</th>
      <td>23.267$</td>
  </tr>
  <tr>
      <th>brand</th>
      <td>mustang</td>
  </tr>
</tbody>

В этой таблице мне нужно очистить mustang значение. Но я не могу использовать $crawler->filter('table td')->eq(3); для этого. Потому что положение всегда меняется. Поэтому мне нужно поймать значение по th. Я имею в виду, если значение th равно brand , тогда получите значение td

, что является лучшим способом для этого?

1 Ответ

0 голосов
/ 15 октября 2019

Не уверен, что это лучшее решение, но я решил это следующим образом:

$props = $node->filter("table th")->each(function($th, $i){
    return $th->text();
});
$vals = $node->filter("table td")->each(function($td, $i){
    return $td->text();
});

$items = [
    "brand" => "", 
    "color" => "",
];

for ($a=0; $a < count($props); $a++) { 
    switch ($props[$a]) {
        case 'brand':
            $items["brand"] = $vals[$a];
            break;                        
    }
}

Если есть другой или гораздо лучший способ добиться этого. Пожалуйста, не стесняйтесь размещать это здесь. Спасибо.

...