我有一个常规的,嵌套的HTML无序链接列表,我想用PHP抓它并将其转换为数组。
原始列表如下所示:
<ul>
<li><a href="http://someurl.com">First item</a>
<ul>
<li><a href="http://someotherurl.com/">Child of First Item</a></li>
<li><a href="http://someotherurl.com/">Second Child of First Item</a></li>
</ul>
</li>
<li><a href="http://bogusurl.com">Second item</a></li>
<li><a href="http://bogusurl.com">Third item</a></li>
<li><a href="http://bogusurl.com">Fourth item</a></li>
</ul>
任何物品都可以有孩子。
(实际的屏幕抓取不是问题,我可以这样做。)
我想把它变成一个只包含链接的PHP数组,同时保持列表的层次性。有什么想法吗?
我看过使用htmlsimpledom和phpQuery,它们都使用类似jQuery的语法。但是,我似乎无法正确使用语法。我可以获得所有链接,但最终我失去了分层性质和顺序。
感谢。
答案 0 :(得分:0)
沿着以下行使用DOMDocument和SimpleXMLElement:
$doc = new DOMDocument();
$doc->loadHTML($html);
$xmlStr = $doc->saveXml($doc->documentElement);
$xml = new SimpleXmlElement($xmlStr);
$links = array();
foreach ($xml->xpath('//a') as $li) {
$links[] = $li->attributes()->href;
}
如果将href作为SimpleXMLElement添加到$ links,请使用ob_start和ob_clean来捕获字符串。