如何通过Simple Html Dom解析html部分中的多个元素

时间:2015-05-26 02:06:16

标签: php html parsing dom

我试图在li中获取各种元素,如下所示。我是新手,所以我可能没有使用最有效的方法,但这是我开始的地方......

示例代码简化....

<li id='entry_0' title='09879879'>
    <div ....>
        <h2> The title text would go here </h2>
        <span class='entrySize' ....> 20oz </span>
        <span class='entryPrice' ....> $32.09 </span>
        <span class='anotherEntry' ....> More Data I need To Grab </span>
        .......
    </div>
</li>

<li> .... With same structure as above .... 100's of entries like this </li>

我知道如何单独拉出单个部件,但却难以掌握如何在html的一部分内进行分组。

$filename = "directory/file.html";
$html = file_get_html($filename);

for($i=0; $i<=count(entryNumber);$i++)
{
    $li_id = "entry_".$i;
    foreach($html->find('li[id='.$li_id.']') as $li) {         
        echo $li->innertext;
    }
}

因此,这会获取订单项标记中的内容,并将ID编号作为唯一属性。当我遍历订单项代码时,我想抓住h2文本,entrySize,entryPrice等。我不明白的是,一旦我有行项目标记内容,我如何解析该行项目内部标记和属性。完整HTML文档的其他部分可能在整个文档中具有与这些标记具有相同ID,类的标记,因此我将其分解为部分,而不是一次解析每个部分。

我还想从li标签的title标签中提取title属性。

我希望我的解释有意义。

1 个答案:

答案 0 :(得分:0)

您应该使用DOM解析器。 PHP捆绑了一个,还有许多其他的可以使用。

http://php.net/dom

PHP Simple HTML DOM Parser

<?php
$html = file_get_content($page);
$doc = new DOMDocument();
$doc->loadHTML($html);

// now find what you need
$items = $dom->getElementsByTagName('li');
foreach ($items as $item) {
    $id = $item->getAttribute('id');
    if (strpos($id, 'item_') !== false) {
        // found matchin li, grab its children
    }
}

使用此作为基线,我们无法为您编写所有代码。查看PHP文档以完成此操作:)从目前为止,您需要按照文档使其获取子值并处理它们。