Распарсить таблицу с заголовком в tr

167
30 марта 2018, 13:47

Часть таблицы

<tr>
    <td colspan="2" class="feature_block_name">
    <strong>Основные характеристики</strong>
    </td>
    </tr>
    <tr>
    <td class="feature_name">Адрес производителя</td>
    <td class="feature_value">Ariston Thermo SPA. Viale Aristide Merloni, 45 60044 Fabriano AN, Italia.</td>
    </tr>
    <tr>
    <td colspan="2" class="feature_block_name"><strong>Конструкция</strong></td>
    </tr>
    <tr>
    <td class="feature_name">Дисплей</td>
    <td class="feature_value">Есть</td>
    </tr>
    <tr>
    <td colspan="2" class="feature_block_name"><strong>Основные</strong></td>
    </tr>
    <tr>
    <td class="feature_name">Вид</td>
    <td class="feature_value">газовый</td>
    </tr>

Вид какой требуется получить

Основные характеристики|Адрес производителя|Ariston Thermo SPA. Viale Aristide Merloni, 45 60044 Fabriano AN, Italia.
Конструкция|Дисплей|Есть

и так далее по таблице.

Мой кусочек кода который работает не правильно.

$table = $html_product->find('#product_teh tbody',0);
$tr = $table->find('tr');
foreach($tr as $rowa) {
    $td_feature_block_name = $rowa->find('td.feature_block_name');
    $td_feature_name = $rowa->find('td.feature_name');
    $td_feature_value = $rowa->find('td.feature_value');
    $theData[] = $td_feature_block_name[0]."|".$td_feature_name[0]."|".$td_feature_value[0];
}
$theData = implode($theData,PHP_EOL);

Получается на выходе

Основные характеристики||
|Адрес производителя|Ariston Thermo SPA. Viale Aristide Merloni, 45 60044 Fabriano AN, Italia.
Конструкция||
|Дисплей|Есть
Answer 1

в вашем случае нужен классический цикл по строкам с шагом равным 2.

Если приведенный вами html-код обернуть в <table>...<table> для примера, то выглядеть оно будет как то так:

$html = str_get_html($txt);
$rows = $html->find("tr");
$rcount = count($rows);
for($idx = 0; $idx < $rcount; $idx+=2){
    $name = $rows[$idx]->find("td",0)->plaintext;
    $fname  = $rows[$idx + 1]->find(".feature_name",0)->plaintext;
    $fvalue = $rows[$idx + 1]->find(".feature_value", 0)->plaintext;
    echo "$name|$fname|$fvalue\n";
}
READ ALSO
Как связать записи в БД по уникальному id?

Как связать записи в БД по уникальному id?

Всем приветВ БД есть две таблицы: Первая основная таблица "db" содержит поля

233
Почему не удается получить ответ от сервера soap wsdl php Curl?

Почему не удается получить ответ от сервера soap wsdl php Curl?

Сам не дружу пока что с soap wsdl, хоть и прочитал кучу статей про них, но никак не укладываются в голове базовые основыВ интеренете нашел пример...

198
DateRangePicker дата на правом календаре

DateRangePicker дата на правом календаре

ПриветИспользую DateRangePicker от картика

137
Как удалить дубли с под массива?

Как удалить дубли с под массива?

Есть массив вот такого вида

147