Php DOM getElementsByTagName并生成关联数组
我试图阅读一些html,然后根据“ul-li-span”和“ul-li-strong”的结果创建一个关联数组。跨度将包含第一个值和第二个值。当我尝试了这个,我得到了错误Php DOM getElementsByTagName并生成关联数组,php,arrays,dom,associative-array,Php,Arrays,Dom,Associative Array,我试图阅读一些html,然后根据“ul-li-span”和“ul-li-strong”的结果创建一个关联数组。跨度将包含第一个值和第二个值。当我尝试了这个,我得到了错误 Trying to get property of non-object 我的php是 // Start the process of stripping the elements and putting in an assocative array libxml_use_internal_errors(true); $d
Trying to get property of non-object
我的php是
// Start the process of stripping the elements and putting in an assocative array
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($result);
$results = array();
// Get all li elements on the page
foreach ($dom->getElementsByTagName('ul') as $ul) {
$results[$ul->getElementsByTagName('span')->item(0)->textContent]=$ul->getElementsByTagName('strong')->item(1)->textContent;
}
html如下所示
<ul class="ul-data">
<li>
<span>Vehicle make </span>
<strong>AUDI</strong>
</li>
<li id="date">
<span>Date of first registration </span>
<strong>31 March 2005</strong>
</li>a
<li>
<span>Year of manufacture </span>
<strong>1999</strong>
</li>
<li id="cc">
<span>Cylinder capacity (cc) </span>
<strong>2993 cc</strong>
</li>
<li>
<span>CO₂Emissions </span>
<strong id="CO2EmissionShown">142 g/km</strong>
</li>
<li id="fuel">
<span>Fuel type </span>
<strong id="FuelTypeShown">DIESEL</strong>
</li>
<li>
<span>Export marker </span>
<strong>No</strong>
</li>
<li>
<span>Vehicle status </span>
<strong>Tax not due</strong>
</li>
<li>
<span>Vehicle colour </span>
<strong>GREY</strong>
</li>
<li>
<span>Vehicle type approval </span>
<strong>M1</strong>
</li>
<li>
<span>Wheelplan </span>
<strong>2 AXLE RIGID BODY</strong>
</li>
<li>
<span>Revenue weight </span>
<strong>Not available</strong>
</li>
</ul>
-
车辆制造
奥迪
-
首次登记日期
2005年3月31日
a
-
制造年份
1999年
-
气缸容量(cc)
2993 cc
-
一氧化碳₂排放
142克/公里
-
燃料类型
柴油机
-
出口标记
否
-
车辆状态
未到期税款
-
车辆颜色
灰色
-
车辆型式认证
M1
-
车轮平面图
2轴刚体
-
收入权重
不可用
正如你所见,跨度是标题,强者是价值。在Jquery中,我可以只做$('ulspan');美元("ul strong");;我把李的书循环一遍,然后选择他们,对吗?我知道这是错误的,但我不确定在尝试了其他方法(如分别获取这两种方法)后如何处理,但我不确定如何使用DOM执行此操作。只有一个
,您要查找的
是项(0)
只有一个
,您要查找的
是项(0)
在你的循环中,你应该检查李不是唯一的ul
// Get all li elements on the page
foreach ($dom->getElementsByTagName('li') as $li) {
$results[$li->getElementsByTagName('span')->item(0)->textContent]=$li->getElementsByTagName('strong')->item(0)->textContent;
}
在你的循环中,你应该检查李不是唯一的ul
// Get all li elements on the page
foreach ($dom->getElementsByTagName('li') as $li) {
$results[$li->getElementsByTagName('span')->item(0)->textContent]=$li->getElementsByTagName('strong')->item(0)->textContent;
}