douhu1990 2015-07-15 06:25
浏览 11
已采纳

从div列表获取文本到PHP数组

Here is my string.

$list = '
<div id="list">
   <div class="item">foo: bar</div>
   <div class="item">name: value</div>
   <div class="item">color: red</div>
   <div class="item">count: 1</div>
</div>
';

How is the best way to get data from this html and add to PHP array? I would like receive:

$items = array('foo' => 'bar', 'name' => 'value', 'color' => 'red', 'count' => 1);
  • 写回答

3条回答 默认 最新

  • doutiao2540 2015-07-15 06:48
    关注

    Use DOMDocument and DOMXpath to parse the html and get the contents.
    You can then split them on : and add them to an array.
    Something like this -

    $str = <<<EOF
    <div id="list">
       <div class="item">foo: bar</div>
       <div class="item">name: value</div>
       <div class="item">color: red</div>
       <div class="item">count: 1</div>
    </div>
    EOF;
    
    //Parse the html data
    $dom = new DOMDocument;
    $dom->loadHTML($str);
    
    $xpath = new DOMXpath($dom);
    
    //Get only those divs which have class=item
    $div_list = $xpath->query('//div[@class="item"]');
    
    $content_arr = []; 
    foreach($div_list as $d){
         $c = explode(": ", $d->nodeValue);
         $content_arr[$c[0]] = $c[1];
    }
    
    var_dump($content_arr);
    

    This outputs -

    array(4) {
      'foo' =>
      string(3) "bar"
      'name' =>
      string(5) "value"
      'color' =>
      string(3) "red"
      'count' =>
      string(1) "1"
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题