как создать дочерние узлы с помощью запроса php xpath

0

Код выглядит примерно так:

$b = $xpath->query('//td[@class="abc"]');
foreach ($b as $b2) { /*contents*/ }

Внутри td это содержимое будет там:

<h2><a href="http://www.example.com/" title="this is link">Link Title</a>
    <span class="spanclass">Spinning</span></h3>
<div class="xyz">ABC XYZ abc xyz</div>
<span class="phr">Style</span>red

если я печатаю/эхо, "print_r ($b2-> nodeValue);", содержимое будет выглядеть так:

Link Title
  Spinning
 ABC XYZ abc xyz
 Style red

Теперь попробовал этот код внутри каждого $ b2:

foreach ($xpath->query('.//a[@href]', $b2) as $child) {
   print_r($child->nodeValue);
}

Ответ идет:

Link Title

Мне нужна эта информация оттуда:

$title = 'Link Title';
$titlelink = 'http://www.example.com';
$spanclassinfo = 'Spinning';
$stylerandom = 'red';

Любая помощь? Заранее спасибо.

Теги:
xpath

1 ответ

0

Вы должны проверить, есть ли у него атрибуты с чем-то вроде этого.

Получить все атрибуты в каждом элементе

foreach ($b as $b2) {
    if ($b2->hasAttributes()) {
        foreach ($p->attributes as $attr) {
          $name = $attr->nodeName;
          $value = $attr->nodeValue;
          echo 'Attribute ' . $name . ' - ' . $value . '<br />';
        }
    }
}

Получить определенные атрибуты из элемента

foreach ($b as $b2) {
    if ($b2->hasAttributes()) {
        $titlelink = $b2->attributes->getNamedItem('href')->value;
    }
}

Вам нужно будет добавить некоторые проверки, чтобы убедиться, что атрибут, который вы пытаетесь выбрать, действительно существует. Таким образом, вы не пытаетесь захватить атрибут href в теге span.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню