简单的HTML DOM-如何获取dt/dd元素进行数组排列? [英] Simple html dom - how get dt/dd elements to array?
本文介绍了简单的HTML DOM-如何获取dt/dd元素进行数组排列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
HTML:
<div class="table">
<dl>
<dt>ID:</dt>
<dd>632991</dd>
<dt>Type:</dt>
<dd>NEW</dd>
<dt>Body Type:</dt>
<dd>Compact</dd>
</dl>
</div>
在PHP中使用simple_html_dom来获得此效果的最佳方法是什么:
What's is the best way to get this using simple_html_dom in PHP:
PHP:
$option = array(
'id' => 632991,
'Type' => 'NEW',
'Body Type' => 'Compact'
);
推荐答案
您可以使用XPath:
You could use XPath:
在Stackoverflow上有很多帖子.在此处使用搜索.
Here are a lot of posts on Stackoverflow. Use the search here.
<?php
$dom = new DOMDocument();
$dom->loadHTML('<div class="table">
<dl class="list">
<dt>ID:</dt>
<dd>632991</dd>
<dt>Type:</dt>
<dd>NEW</dd>
<dt>Body Type:</dt>
<dd>Compact</dd>
</dl>
</div>');
$nodes = $dom->getElementsByTagName('dl');
foreach ($nodes as $node) {
var_dump(getArray($node));
}
function getArray($node) {
$array = false;
if ($node->hasAttributes()) {
foreach ($node->attributes as $attr) {
$array[$attr->nodeName] = $attr->nodeValue;
}
}
if ($node->hasChildNodes()) {
if ($node->childNodes->length == 1) {
$array[$node->firstChild->nodeName] = $node->firstChild->nodeValue;
} else {
foreach ($node->childNodes as $childNode) {
if ($childNode->nodeType != XML_TEXT_NODE) {
$array[$childNode->nodeName][] = getArray($childNode);
}
}
}
}
return $array;
}
?>
getArray函数来自php.net
The function getArray is from php.net
这篇关于简单的HTML DOM-如何获取dt/dd元素进行数组排列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文