PHP : 简单 DOM 解析器如何迭代此 html 代码

PHP : Simple DOM Parser how to iterate this html code

<div id="score">
               <div class="name"><span style="width:68%">A</span></div>
                   <span class="roll">1</span>    

                <div class="name"><span style="width:60%">B</span></div>
                   <span class="roll">2</span>       

                 <div class="name"><span style="width:56%">C</span></div>
                   <span class="roll">3</span>          
 </div>

我想遍历 div.name 的每个跨度,但我没有到达下一个 span.roll标签我已经使用过这段代码,如果 A 可用,则检查条件,然后显示 1 并与上面的名称相同以检查。

<?php
include("simple_html_dom.php");
$obj = new simple_html_dom();

 foreach ($obj->find('div[id=score]') as $factor)
    {
         $item = $factor->find('div[class=name] span')->plaintext;

          if(trim($item) == 'A')
          { 
             $a = $factor->find('span[class=roll]',0)->plaintext;
          }
          if(trim($item) == 'B')
          { 
            $b = $factor->find('span[class=roll]',1)->plaintext;
          }
          if(trim($item) == 'C')
          { 
             $c = $factor->find('span[class=roll]',2)->plaintext;
          }
           $final_array['overalldata'] = array
           (
            'a'=> $a,
            'b' => $b,
            'c' => $c,

            );
    }
   print_r($final_array);
   die;


?>

任何人有任何想法请帮忙整理一下。谢谢

作为替代方案,由于您定位的是该 ID,因此您不需要在父元素上有 foreach,直接获取它即可。

然后将 foreach 应用到它的子项上,得到 namesrolls.

想法是这样的:

$final_array['overalldata'] = null; // initialize
$factor = $obj->find('div[id=score]', 0); // get the parent
foreach ($factor->find('div[class=name]') as $item) { // each item of the parent
    $name = $item->find('span', 0)->innertext; // get the name
    $roll = $item->next_sibling()->innertext; // get the next sibling which is the roll
    $final_array['overalldata'][$name] = $roll; // and assign it (push it inside the array)

}
print_r($final_array);

所以基本上,要获得 name 只需将每个 div 内的子对象作为目标,然后将 roll 作为目标(这是每个 [=14= 的兄弟姐妹) ]), 只需使用 ->next_sibling() 方法。

旁注:如果我是你,我会坚持 DOM。它已经内置在 PHP 中,无需包含任何第三方库。