2014-11-10 2 views
0

код что-то вроде этого:как создать дочерние узлы с PHP XPATH запроса

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

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

<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'; 

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

ответ

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.

Смежные вопросы