我试图在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属性。
我希望我的解释有意义。
答案 0 :(得分:0)
您应该使用DOM解析器。 PHP捆绑了一个,还有许多其他的可以使用。
<?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文档以完成此操作:)从目前为止,您需要按照文档使其获取子值并处理它们。