#php #parsing
#php #синтаксический анализ
Вопрос:
<div class="bk-cell-wrapper">
<div class="bk-timetable-cell">
div class="day-item-hover" data-detail="{**value i want to find**}" >BlaBlaBlabLa</div>
</div>
</div>
из этого шаблона, который повторяется несколько раз, я хочу извлечь все divs с атрибутом «data-detail» в нем.
Я сделал это с помощью этого кода :
$html = file_get_html($url);
foreach($html->find('div[data-detail]') as $element )
echo $element
теперь я хочу извлечь значение в атрибуте «data-detail» из переменной $element, где я храню каждый div с attr «data-detail» в нем
просмотр-источник: https://oa-poruba.bakalari.cz/Расписание / Общедоступный / Актуальный / Класс / WV
Ответ №1:
Вы можете сделать это следующим образом:
$html = file_get_html($url);
$myDiv = $html->find('div[data-detail]');
foreach($myDiv as $element ) {
echo $element->getAttribute('data-detail');
}
Ответ №2:
вы можете использовать этот пакет php-html-parser
и получите то, что вы хотите, вот так:
require "vendor/autoload.php";
use PHPHtmlParserDom;
$dom = new Dom;
$dom->loadStr('<div class="all"><p>Hey bro, <a href="google.com">click here</a><br /> :)</p></div>');
$a = $dom->find('a')[0];
echo $a->text; // "click here"
А также получить атрибут следующим образом:
// Assuming you installed from Composer:
require "vendor/autoload.php";
use PHPHtmlParserDom;
$dom = new Dom;
$dom->loadFromFile('tests/data/big.html');
$contents = $dom->find('.content-border');
echo count($contents); // 10
foreach ($contents as $content)
{
// get the class attr
$class = $content->getAttribute('class');
}