[英]Extracting data from the ul / li menu elements in DOMDocument
我有一個菜單項ol / li的列表,我要從中提取數據:指定類ol(項目3)中的TITLE,URL,TAGS和DESC。 我寫的代碼行不通,我無法處理,您是否暗示我在做什么錯?
菜單:
<ol class="items-1">/*---*/</ol>
<ol class="items-2">/*---*/</ol>
<ol class="items-3">
<li>
<div class="title">[TITLE]</div>
<a href="[URL]">
<span class="tags">[TAGS]</span>
<span class="desc">[DESC]</span>
/*---*/
</a>
</li>
<li>
<div class="title">[TITLE]</div>
<a href="[URL]">
<span class="tags">[TAGS]</span>
<span class="desc">[DESC]</span>
/*---*/
</a>
</li>
<li>
<div class="title">[TITLE]</div>
<a href="[URL]">
<span class="tags">[TAGS]</span>
<span class="desc">[DESC]</span>
/*---*/
</a>
</li>
</ol>
腳本
<?php
$html = '<ol class="items-1">/*---*/</ol>
<ol class="items-2">/*---*/</ol>
<ol class="items-3">
<li>
<div class="title">[TITLE]</div>
<a href="[URL]">
<span class="tags">[TAGS]</span>
<span class="desc">[DESC]</span>
/*---*/
</a>
</li>
<li>
<div class="title">[TITLE]</div>
<a href="[URL]">
<span class="tags">[TAGS]</span>
<span class="desc">[DESC]</span>
/*---*/
</a>
</li> </ol>
';
$dom = new DOMDocument();
$dom->loadHTML($html);
$ol = $dom->getElementsByTagName("ol")[2]; //for items-3 class
$li = $ol->getElementsByTagName("li");
foreach ($li as $element) {
$title = $element->getElementsByTagName('div')->nodeValue;
$url = $element->getElementsByTagName('a')->getAttribute('href');
$tags = $element->getElementsByTagName('span')[0]->nodeValue;
$desc = $element->getElementsByTagName('span')[1]->nodeValue;
}
?>
感謝所有的幫助:)。
getElementsByTagName返回DOMNodeList 。 您必須告訴php您要使用哪一項。
因此,類DOMNodeList具有方法item() ,該方法通過NodeList中的索引返回DOMNode 。
例如改變這個
$title = $element->getElementsByTagName('div')->nodeValue;
至
$title = $element->getElementsByTagName('div')->item(0)->nodeValue;
更正的代碼:
$dom = new DOMDocument();
$dom->loadHTML($html);
$ol = $dom->getElementsByTagName("ol")->item(2); //for items-3 class
$li = $ol->getElementsByTagName("li");
foreach ($li as $element) {
$title = $element->getElementsByTagName('div')->item(0)->nodeValue;
$url = $element->getElementsByTagName('a')->item(0)->getAttribute('href');
$tags = $element->getElementsByTagName('span')->item(0)->nodeValue;
$desc = $element->getElementsByTagName('span')->item(1)->nodeValue;
}
工作片段: https : //3v4l.org/6hcOt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.