Название блока добавить к каждой характеристике

Статус
В этой теме нельзя размещать новые ответы.

E-body

Мой дом здесь!
Регистрация
6 Сен 2007
Сообщения
992
Реакции
342
Здраствуйте, самостоятельно не в силе решить корректно изза нехватки знаний регулярных выражений.
Необходимо чтоб название блока, добавлялос к каждой характерстики своего блока.
Маркет яндекса код от товара Для просмотра ссылки Войди или Зарегистрируйся (они все по однотипности кода одинаковы)
Вот возьмем код двух блоков для примера "Основное" и "Экран"
HTML:
<tr><th colspan="2" class="b-properties__title">Основное</th></tr><tr><th class="b-properties__label b-properties__label-title"><span>Тип</span></th><td class="b-properties__value">портативный</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Область применения</span></th><td class="b-properties__value">автомобильный</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Программное обеспечение</span></th><td class="b-properties__value">Garmin</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Количество путевых точек</span></th><td class="b-properties__value">1000</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Возможность загрузки карты местности</span></th><td class="b-properties__value">есть</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Функция расчета маршрута</span></th><td class="b-properties__value">есть</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Голосовые сообщения</span></th><td class="b-properties__value">есть</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Звуковая сигнализация</span></th><td class="b-properties__value">есть</td></tr><tr><th colspan="2" class="b-properties__title">Экран</th></tr><tr><th class="b-properties__label b-properties__label-title"><span>Тип экрана</span></th><td class="b-properties__value">LCD-цветной</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Диагональ экрана</span></th><td class="b-properties__value">5 дюйм.</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Разрешение экрана</span></th><td class="b-properties__value">480x272 пикс.</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Сенсорный экран</span></th><td class="b-properties__value">есть</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Подсветка экрана</span></th><td class="b-properties__value">есть</td></tr>
И после обработки получаем прмерно так, около каждой характеристики название ее блока (переходы строк и тройные решеточки добавил для наглядности)
HTML:
<tr><th colspan="2" class="b-properties__title">Основное</th></tr><tr>
###b-properties__title">Основное</th><th class="b-properties__label b-properties__label-title"><span>Тип</span></th><td class="b-properties__value">портативный</td></tr>
###b-properties__title">Основное</th><tr><th class="b-properties__label b-properties__label-title"><span>Область применения</span></th><td class="b-properties__value">автомобильный</td></tr>
###b-properties__title">Основное</th><tr><th class="b-properties__label b-properties__label-title"><span>Программное обеспечение</span></th><td class="b-properties__value">Garmin</td></tr>
###b-properties__title">Основное</th><tr><th class="b-properties__label b-properties__label-title"><span>Количество путевых точек</span></th><td class="b-properties__value">1000</td></tr>
###b-properties__title">Основное</th><tr><th class="b-properties__label b-properties__label-title"><span>Возможность загрузки карты местности</span></th><td class="b-properties__value">есть</td></tr>
###b-properties__title">Основное</th><tr><th class="b-properties__label b-properties__label-title"><span>Функция расчета маршрута</span></th><td class="b-properties__value">есть</td></tr>
###b-properties__title">Основное</th><tr><th class="b-properties__label b-properties__label-title"><span>Голосовые сообщения</span></th><td class="b-properties__value">есть</td></tr>
###b-properties__title">Основное</th><tr><th class="b-properties__label b-properties__label-title"><span>Звуковая сигнализация</span></th><td class="b-properties__value">есть</td></tr>
<tr><th colspan="2" class="b-properties__title">Экран</th></tr>
###b-properties__title">Экран</th><tr><th class="b-properties__label b-properties__label-title"><span>Тип экрана</span></th><td class="b-properties__value">LCD-цветной</td></tr>
###b-properties__title">Экран</th><tr><th class="b-properties__label b-properties__label-title"><span>Диагональ экрана</span></th><td class="b-properties__value">5 дюйм.</td></tr>
###b-properties__title">Экран</th><tr><th class="b-properties__label b-properties__label-title"><span>Разрешение экрана</span></th><td class="b-properties__value">480x272 пикс.</td></tr>
###b-properties__title">Экран</th><tr><th class="b-properties__label b-properties__label-title"><span>Сенсорный экран</span></th><td class="b-properties__value">есть</td></tr>
###b-properties__title">Экран</th><tr><th class="b-properties__label b-properties__label-title"><span>Подсветка экрана</span></th><td class="b-properties__value">есть</td></tr>

XCGgui8.png


Самостоятельно пробовал
(b-properties__title">.*?</th></tr>)(<tr><th class="b-properties__label b-properties__label-title"><span>.*?</tr>)(<tr><th class="b-properties__label b-properties__label-title"><span>.*?</tr>)(<tr><th class="b-properties__label b-properties__label-title"><span>.*?</tr>)(<tr><th class="b-properties__label b-properties__label-title"><span>.*?</tr>)(<tr><th class="b-properties__label b-properties__label-title"><span>.*?</tr>)|(<tr><th class="b-properties__label b-properties__label-title"><span>.*?</tr>)|(<tr><th class="b-properties__label b-properties__label-title"><span>.*?</tr>)|(<tr><th class="b-properties__label b-properties__label-title"><span>.*?</tr>)|(<tr><th class="b-properties__label b-properties__label-title"><span>.*?</tr>)
и потом значение $1 добавлять к характерстикам $2, $3, $4, $5, и т.д. до $20. Конечно в итоге получалось не то что надо.
 
Я бы сделал что-то вроде этого. Хотелось исключительно регуляркой обойтись, но не получилось чето - не стал время дальше тратить...
PHP:
$t = <<<HTML
<table>
<tr><th colspan="2" class="b-properties__title">Основное</th></tr><tr><th class="b-properties__label b-properties__label-title"><span>Тип</span></th><td class="b-properties__value">портативный</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Область применения</span></th><td class="b-properties__value">автомобильный</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Программное обеспечение</span></th><td class="b-properties__value">Garmin</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Количество путевых точек</span></th><td class="b-properties__value">1000</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Возможность загрузки карты местности</span></th><td class="b-properties__value">есть</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Функция расчета маршрута</span></th><td class="b-properties__value">есть</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Голосовые сообщения</span></th><td class="b-properties__value">есть</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Звуковая сигнализация</span></th><td class="b-properties__value">есть</td></tr><tr><th colspan="2" class="b-properties__title">Экран</th></tr><tr><th class="b-properties__label b-properties__label-title"><span>Тип экрана</span></th><td class="b-properties__value">LCD-цветной</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Диагональ экрана</span></th><td class="b-properties__value">5 дюйм.</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Разрешение экрана</span></th><td class="b-properties__value">480x272 пикс.</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Сенсорный экран</span></th><td class="b-properties__value">есть</td></tr><tr><th class="b-properties__label b-properties__label-title"><span>Подсветка экрана</span></th><td class="b-properties__value">есть</td></tr>
</table>
HTML;
 
$_t = explode("<tr", $t);
$name = "";
foreach( $_t as $i=>$row )
{
  if( preg_match("/b-properties__title(?:.*?)>(.*?)<\/th>(?:.*?)<\/tr>/is", $row, $match) && isset($match[1])&&$match[1]!='' )
  {
      unset($_t[$i]);
      $name = $match[1];
  }
  $_t[$i] = str_replace('b-properties__label-title"><span>', 'b-properties__label-title"><span>'.$name.' ', $_t[$i]);
  if( trim($_t[$i])=='' ) unset($_t[$i]);
}
$t = implode('<tr',$_t);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху