Преобразовать (не вложенный) неупорядоченный список ссылок HTML в массив ссылок PHP - PullRequest
0 голосов
/ 11 апреля 2010

У меня есть обычный, неупорядоченный список ссылок в формате 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 как синтаксис. Но я не могу понять синтаксис правильно. Я могу получить все ссылки, но в итоге теряю иерархическую природу и порядок.

Спасибо.

1 Ответ

0 голосов
/ 11 апреля 2010

Используйте 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 добавляется в $ links как элемент SimpleXMLE, используйте ob_start и ob_clean для захвата строки.

Шпаргалка для запросов xpath (pdf)

...