在此文本后面的下一个标签中获取文本 - Simple HTML Dom Parser

时间:2014-07-28 12:52:55

标签: html parsing dom simple-html-dom

我正在尝试使用Simple HTML dom解析器获取下面的名字和姓氏的值。 有没有办法可以参考标签并获得下一个兄弟,因为订单可能会改变。

$item['city'] = trim($article->find('label', 0)->plaintext);

代码我已经开始,但我不知道如何引用名字。

HTML

<div class="summary">
    <h3>Listing summary</h3>
    <ul>
        <li>
            <label>Reference</label>
            <strong>SP44</strong>
        </li>    
        <li>
            <label>First Name</label>
            <strong>John</strong>
        </li>    
        <li>
            <label>Surname</label>
            <strong>Smith</strong>
        </li>    
    </ul>
</div>

2 个答案:

答案 0 :(得分:0)

循环列表项并根据您的条件检查该项的标签

foreach( $article->find('li') as $li){
    switch($li->find('label',0)->plaintext){
         case 'First Name':
             $item['first_name'] = $li->find('strong', 0)->plaintext;
             break;
         case 'Surname':
             $item['surname'] = $li->find('strong', 0)->plaintext;
             break;
    }
}

答案 1 :(得分:0)

谢谢,我想出了类似的东西: 与上面的代码相比,这段代码是否使用了大量的处理能力?将它变成函数是否是一个好主意?

foreach($html->find('div[class=summary] li') as $e) {
if(strpos($e->find('label', 0), "first Name") > 0 ) {  
echo $e->find('strong', 0). '<br>';
}
if(strpos($e->find('label', 0), "surname") > 0 ) {  
echo $e->find('strong', 0). '<br>';
} }