Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php DOM getElementsByTagName并生成关联数组_Php_Arrays_Dom_Associative Array - Fatal编程技术网

Php DOM getElementsByTagName并生成关联数组

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

我试图阅读一些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);

$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;
    }