我正在使用 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 :调用未定义的方法 DOMDocument::getAttribute()
。
基本上,我想选择所有 itemprop=""
并将它们放入数组中。
感谢大家的帮助!
最佳答案
您需要先使用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
关于php - 获取所有具有 itemprop 属性的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16755673/