【问题标题】:using Simple html DOM to extract id使用 Simple html DOM 提取 id
【发布时间】:2013-12-12 04:19:51
【问题描述】:

我正在使用简单的 html dom 来提取用户的梦幻足球队。我要做的是在下面的源代码中获取每个玩家的“id”号。因此,例如在“id”下方的 div 中是 121。

<div id="ismGraphical1" class='ismPitchElement  {"coptr": null, "played": 0, "pos": 1,           "can_sub": 1, "ep_this": 4.5, "event_points": 2, "id": 121, "sub": 0, "m": 1, "copnr":   null, "is_captain": false, "team": 6, "is_vice_captain": false, "type": 1, "ep_next": 4.5} '>

下面的代码返回整个 div,但我只想获取 id。我试过使用嵌套的 for 循环,但它不起作用。我认为这与 div 内的数组有关。但不确定从哪里开始。如果有人能指出我正确的方向,我将不胜感激

$html = new simple_html_dom($result);
foreach($html->find('div.ismPitchElement') as $pitchview)
echo $pitchview;

【问题讨论】:

    标签: php html dom


    【解决方案1】:

    如果你仍然想使用 simplehtmldom lib 来做。

    foreach ($html->find('[class^=ismPitchElement]') as $el) {
            print json_decode(ltrim($el->{'class'}, "ismPitchElement"))->{'id'};
        }
    

    【讨论】:

      【解决方案2】:

      不需要外部库。你可以使用DOMXPath,这些类是PHP核心的一部分:

      $result = <<<EOF
      <div id="ismGraphical1" class='ismPitchElement  {"coptr": null, "played": 0, "pos": 1,           "can_sub": 1, "ep_this": 4.5, "event_points": 2, "id": 121, "sub": 0, "m": 1, "copnr":   null, "is_captain": false, "team": 6, "is_vice_captain": false, "type": 1, "ep_next": 4.5} '> 
      EOF;
      
      $doc = new DOMDocument();
      $doc->loadHTML($result);
      $selector = new DOMXPath($doc);
      
      foreach($selector->query('//@class[starts-with(., "ismPitchElement")]') as $classattr) {
          // remove the prefix using `ltrim()`
          $json = json_decode(ltrim($classattr->nodeValue, "ismPitchElement"));
          var_dump($json->id);
      }
      

      输出:

      int(121)
      

      【讨论】:

      • 对不起,我误会了
      • 已更新答案。如您所见,可以用更少的代码完成。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多