3

我正在使用 PHP DomDocument 并试图刮掉看起来像这样的东西:

<div itemprop='movie'>Fight Club</div>

它也可能如下所示:

<span itemprop='musician'>Ozzy Osbourne</span>

我想抓取itemprop='n'页面上的所有内容并将它们放入一个数组中以存储它们的节点值和相关的 itemprop 名称。到目前为止,我的代码如下所示:

function getItemprops(){
        foreach($this->dom->getAttribute("itemprop") as $buffer) {
                $itempropList = array(
                    'theNodeValue' => $buffer->nodeValue,
                    'theItemprop'  => $buffer->getAttribute("itemprop")
                )
                return $itempropList;
        }
}

我的代码应该在以下位置获得一个数组:

array (
      array(
         0 =>
              "theNodeValue" => "Fight Club",
              "theItemprop"  => "movie"
         1 =>
              "theNodeValue" => "Fight Club",
              "theItemprop"  => "movie"
      )
)

不幸的是,我的代码返回Fatal error: Call to undefined method DOMDocument::getAttribute().

所以基本上,我想选择所有itemprop=""的并将它们放入数组中。

感谢大家的帮助!

4

1 回答 1

4

您需要先使用 XPath 选择具有所需属性的所有节点,然后遍历返回的节点以获取文本值和属性值;像这样

$d = new DOMDocument();
$d->loadHTML($xmlsource);
$xpath = new DOMXPath($d);
$nodes = $xpath->query('//*[@itemprop]');  //this catches all elements with itemprop attribute
foreach ($nodes as $node) { 
   // do your stuff here with $node
于 2013-05-26T02:32:44.673 回答