statov12 писал(а): ↑08 май 2019, 11:18
хм, если продолжать в вашем стиле, как тогда получить то что внутри <li> особенно учитывая что внутри всего блока .item может быть несколько списков ul>li и нас интересует только тот что внутри .wrap
Можно получить html .wrap и разобрать его как строку на составляющие части. вот пример для li. Аналогично можно разбирать всё остальное, в том числе и цену и название и т.д.
// получить все товары
$items = $div->get_all_by_attribute("class","item")->elements;
foreach ($items as $item)
{
echo $wrap= $item->get_child_by_attribute("class","wrap",true,true)->get_inner_html();
echo "<br>";
$ind_st = 0;
$li1 = get_string($wrap, "<li>", "</li>", $ind_st);
$li2 = get_string($wrap, "<li>", "</li>", $ind_st);
}
// получить строку по префиксам
function get_string($str1, $pr1, $pr2, &$ind_st = 0)
{
//получаем стартовый индекс
$ind1 = strpos($str1, $pr1, $ind_st);
if($ind1 === false)
{
return "";
}
$ind1_1 = $ind1 + strlen($pr1);
//получаем финишный индекс
$ind2 = strpos($str1, $pr2, $ind1_1);
if ($ind2 === false)
{
return "";
}
// получим результат
$sres = substr($str1, $ind1 + strlen($pr1), $ind2 - $ind1_1);
return trim($sres);
}