Вам нужно создать различные слои для разбора HTML, вы начали с поиска тега <div>
.Из этого вы можете найти тег <a>
в этом <div>
, а затем получить атрибут href (используя ->href
).В этом коде предполагается, что существует только один тег <a>
, поэтому вместо foreach
я просто говорю, используйте первый (используя [0]
).
Теги <span>
- это аналогичный процесс,но поскольку есть повторяющиеся элементы, на этот раз он использует foreach
.Этот код выводит атрибут класса и содержимое диапазона.
$html = str_get_html($response);
$allblocks=$html->find('div.file-right'); //this selects all file-right blocks
if ( count($allblocks) > 0 ){
foreach ( $allblocks as $block ) {
$anchor = $block->find("a");
echo "href=".$anchor[0]->href.PHP_EOL;
echo "text=".$anchor[0]->plaintext.PHP_EOL;
$spans = $block->find("span");
foreach ( $spans as $span ) {
echo "span=".$span->class."=".$span->plaintext.PHP_EOL;
}
}
}
Обратите внимание, что когда в исходном коде вы использовали isset($allblocks)
, в качестве строки перед установкой было задано его значение - даже если он не нашелвсе, что он все еще будет иметь значение.В этом коде я использую count()
, чтобы проверить, возвращено ли что-либо предыдущим вызовом find()
.
С вашим примером HTML, заключенным только в минимальную страницу, вывод будет ...
href=/secrets-of-the-millionaire-mind-tomocubcom-e17682584.html
text= Secrets of the Millionaire Mind - TOMOCUB.COM
span=fi-pagecount=223 Pages
span=fi-year=2005
span=fi-size hidemobile=1015 KB