如何使用php xpath查询创建子节点

时间:2014-11-10 21:51:10

标签: php xpath

代码是这样的:

$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-&gt; 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';

有任何帮助吗? 提前谢谢。

1 个答案:

答案 0 :(得分: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属性。