2015-05-26 31 views
1

我试图获取里面的各种元素,如下所示。我非常新的这个,所以我可以不使用最有效的方法,但是这是我已经开始......如何通过简单的Html Dom解析HTML中多个元素

示例代码的简化....

<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,这些文档在整个文档中都是这样,所以我将它分解为多个部分,而不是每次都要分析每个部分。

我也想拉标题属性标题标签为李标签。

我希望我的解释有意义。

+0

我正在测试一些代码并加入..... echo $ li-> title 我能够从中获得标题值。仍在处理订单项代码中的其他元素/标签。 – Timothy

回答

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文档来完成这个:)从我到目前为止,你需要按照文档,使它抓住孩子的价值观,并处理它们。

+0

感谢您的信息。很有帮助。 – Timothy

相关问题