简单的html dom将第一个孩子解析为数组

雅各布

考虑如下的html代码

<html>
<div class="allItems">
   <div class="Item" id="12345">
      <div class="ItemName">Tom</div>
      <div class="ItemAge">34</div>
      <div class="ItemGender">male</div>
   </div>
   <div class="Item" id="17892">
      <div class="ItemName">Dick</div>
      <div class="ItemAge">23</div>
      <div class="ItemGender">male</div>
   </div>
   <div class="Item" id="98776">
      <div class="ItemName">Harry</div>
      <div class="ItemAge">65</div>
      <div class="ItemGender">male</div>
   </div>
</div>
</html>

我试图解析此html文档,如下所示:

<?php

include_once("/simple_html_dom.php");

<--a bunch of code that works until here -->

$html = str_get_html($str); //this pulls the html code fine

//this is where my array constructions does not work
foreach ($html->find('div.allItems > *') as $article) {
   $item['name'] = $html->find('div.ItemName', 0)->plaintext;
   $item['age'] = $html->find('div.ItemAge',0)->plaintext;
   $item['gender'] = $html->('div.ItemGender', 0)->plaintext;
   $articles[] = $item;
}

print_r($articles);

?>

我期望得到的是:

Array ( [0] => Array ( [name] => Tom [Age] => 34 [Gender] => male ) 
[1] => Array ( [name] => Dick [Age] => 23 [Gender] => male ) 
[2] => Array ( [name] => Harry [Age] => 65 [Gender] => male )

相反,这就是我得到的

Array ( [0] => Array ( [name] => Tom [Age] => 34 [Gender] => male ) 
[1] => Array ( [name] => Tom [Age] => 34 [Gender] => male ) 
[2] => Array ( [name] => Tom [Age] => 34 [Gender] => male )

因此,我的问题是:

如何获得所需的阵列?

车丹·阿梅塔(Chetan Ameta)

您在正确的轨道上,唯一的想法是您需要将div的索引设置为find函数的第二个参数看下面的解决方案:

include_once("simple_html_dom.php");
$str = '<html>
<div class="allItems">
   <div class="Item" id="12345">
      <div class="ItemName">Tom</div>
      <div class="ItemAge">34</div>
      <div class="ItemGender">male</div>
   </div>
   <div class="Item" id="17892">
      <div class="ItemName">Dick</div>
      <div class="ItemAge">23</div>
      <div class="ItemGender">male</div>
   </div>
   <div class="Item" id="98776">
      <div class="ItemName">Harry</div>
      <div class="ItemAge">65</div>
      <div class="ItemGender">male</div>
   </div>
</div>
</html>';

$html = str_get_html($str); //this pulls the html code fine

//this is where my array constructions does not work
$i = 0;
foreach ($html->find('div.allItems > *') as $article) {
    $item['name'] = $html->find('div.ItemName', $i)->plaintext;
    $item['age'] = $html->find('div.ItemAge',$i)->plaintext;
    $item['gender'] = $html->find('div.ItemGender', $i)->plaintext;
    $articles[] = $item;
    $i++;
}

print_r($articles);

输出:

Array
(
    [0] => Array
        (
            [name] => Tom
            [age] => 34
            [gender] => male
        )

    [1] => Array
        (
            [name] => Dick
            [age] => 23
            [gender] => male
        )

    [2] => Array
        (
            [name] => Harry
            [age] => 65
            [gender] => male
        )

)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

简单的HTML dom ahref第一个链接

来自分类Dev

CSS:第一个孩子伪类简单示例不起作用

来自分类Dev

PHP简单HTML DOM解析

来自分类Dev

PHP简单HTML DOM解析器:仅显示一个Div

来自分类Dev

简单的C数组计算器删除第一个数字

来自分类Dev

如何只在父级中选择最后一个孩子或第一个孩子元素?(css-html)

来自分类Dev

简单HTML DOM返回NULL

来自分类Dev

使用简单的HTML Dom PHP

来自分类Dev

简单的HTML dom 404错误

来自分类Dev

将HTML解析为数组仅返回一个单词

来自分类Dev

简单示例:仅允许将表达式作为管道的第一个元素

来自分类Dev

简单示例:仅允许将表达式作为管道的第一个元素

来自分类Dev

LINQ是否有任何简单/优雅的方法将第一个元素放在最后?

来自分类Dev

简单的HTML DOM解析器错误

来自分类Dev

如何使用简单的HTML DOM解析列表

来自分类Dev

刮擦HTML并使用简单HTML DOM计数孩子

来自分类Dev

刮擦HTML并使用简单HTML DOM计数孩子

来自分类Dev

使用 PHP 简单 HTML DOM 解析:来自 CSV 的 URL,但在数组中只是列表中的最后一个 URL

来自分类Dev

使用简单的HTML dom解析器创建多维数组?

来自分类Dev

使用简单的HTML DOM处理HTML数据

来自分类Dev

简单的HTML DOM-遍历html

来自分类Dev

简单的html dom抓取大html文件

来自分类Dev

使用javascript获取HTML DOM上数据集中第一个对象的值

来自分类Dev

使用 Jquery 将简单的 JSON 解析为 HTML

来自分类Dev

在HTML的foreach数组中显示第一个元素

来自分类Dev

HTML仅发布数组,仅发布第一个值

来自分类Dev

Javascript和HTML:获取数组行的第一个值

来自分类Dev

PHP Simple DOM解析器的第一个孩子

来自分类Dev

简单的 VBA 从第一个 .Find 值中选择一个范围?

Related 相关文章

  1. 1

    简单的HTML dom ahref第一个链接

  2. 2

    CSS:第一个孩子伪类简单示例不起作用

  3. 3

    PHP简单HTML DOM解析

  4. 4

    PHP简单HTML DOM解析器:仅显示一个Div

  5. 5

    简单的C数组计算器删除第一个数字

  6. 6

    如何只在父级中选择最后一个孩子或第一个孩子元素?(css-html)

  7. 7

    简单HTML DOM返回NULL

  8. 8

    使用简单的HTML Dom PHP

  9. 9

    简单的HTML dom 404错误

  10. 10

    将HTML解析为数组仅返回一个单词

  11. 11

    简单示例:仅允许将表达式作为管道的第一个元素

  12. 12

    简单示例:仅允许将表达式作为管道的第一个元素

  13. 13

    LINQ是否有任何简单/优雅的方法将第一个元素放在最后?

  14. 14

    简单的HTML DOM解析器错误

  15. 15

    如何使用简单的HTML DOM解析列表

  16. 16

    刮擦HTML并使用简单HTML DOM计数孩子

  17. 17

    刮擦HTML并使用简单HTML DOM计数孩子

  18. 18

    使用 PHP 简单 HTML DOM 解析:来自 CSV 的 URL,但在数组中只是列表中的最后一个 URL

  19. 19

    使用简单的HTML dom解析器创建多维数组?

  20. 20

    使用简单的HTML DOM处理HTML数据

  21. 21

    简单的HTML DOM-遍历html

  22. 22

    简单的html dom抓取大html文件

  23. 23

    使用javascript获取HTML DOM上数据集中第一个对象的值

  24. 24

    使用 Jquery 将简单的 JSON 解析为 HTML

  25. 25

    在HTML的foreach数组中显示第一个元素

  26. 26

    HTML仅发布数组,仅发布第一个值

  27. 27

    Javascript和HTML:获取数组行的第一个值

  28. 28

    PHP Simple DOM解析器的第一个孩子

  29. 29

    简单的 VBA 从第一个 .Find 值中选择一个范围?

热门标签

归档