Convertire un elenco di collegamenti HTML (nidificati) non ordinati di array di collegamenti PHP

Ho un normale elenco di collegamenti non ordinati HTML annidati, e mi piacerebbe scriverlo con PHP e convertirlo in un array.

L’elenco originale ha un aspetto simile al seguente:

 

Qualsiasi articolo può avere figli.

(Lo scraping dello schermo reale non è un problema, posso farlo.)

Mi piacerebbe trasformare questo in un array PHP, solo i collegamenti, pur mantenendo la natura gerarchica della lista. Qualche idea?

Ho cercato di usare htmlsimpledom e phpQuery, che usano entrambi la syntax jQuery. Ma, non riesco a ottenere la syntax giusta. Posso ottenere tutti i collegamenti, ma finisco per perdere la natura e l’ordine gerarchico.

Grazie.

Usa DOMDocument e SimpleXMLElement seguendo le linee di:

 $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; } 

Se href viene aggiunto a $ link come SimpleXMLElement, utilizzare ob_start e ob_clean per acquisire la stringa.

Cheat sheet per le query xpath (pdf)