Разбор элемента Dom в последовательности - PullRequest
0 голосов
/ 02 февраля 2012

Мне нужно проанализировать следующий код

<ul class="zg_hrsr">
<li class="zg_hrsr_item">
<span class="zg_hrsr_rank">#15</span>
<span class="zg_hrsr_ladder">
in 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/ref=pd_zg_hrsr_kstore_1_1">Kindle Store</a>
 > 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/154606011/ref=pd_zg_hrsr_kstore_1_2">Kindle eBooks</a>
 > 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/157325011/ref=pd_zg_hrsr_kstore_1_3">Nonfiction</a>
 > 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/292975011/ref=pd_zg_hrsr_kstore_1_4">Lifestyle & Home</a>
 > 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/156699011/ref=pd_zg_hrsr_kstore_1_5">Home & Garden</a>
 > 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/156828011/ref=pd_zg_hrsr_kstore_1_6">Gardening & Horticulture</a>
 > 
<b>
<a href="http://www.amazon.com/gp/bestsellers/digital-text/156847011/ref=pd_zg_hrsr_kstore_1_7_last">Greenhouses</a>
</b>
</span>
</li>
<li class="zg_hrsr_item">
<span class="zg_hrsr_rank">#26</span>
<span class="zg_hrsr_ladder">
in 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/ref=pd_zg_hrsr_kstore_2_1">Kindle Store</a>
 > 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/154606011/ref=pd_zg_hrsr_kstore_2_2">Kindle eBooks</a>
 > 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/157325011/ref=pd_zg_hrsr_kstore_2_3">Nonfiction</a>
 > 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/292975011/ref=pd_zg_hrsr_kstore_2_4">Lifestyle & Home</a>
 > 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/156699011/ref=pd_zg_hrsr_kstore_2_5">Home & Garden</a>
 > 
<a href="http://www.amazon.com/gp/bestsellers/digital-text/156828011/ref=pd_zg_hrsr_kstore_2_6">Gardening & Horticulture</a>
 > 
<b>
<a href="http://www.amazon.com/gp/bestsellers/digital-text/156849011/ref=pd_zg_hrsr_kstore_2_7_last">House Plants</a>
</b>
</span>
</li>
</ul>

и желаемый вывод:

Ранг продавцов: # 266,715 Заплачено в магазине Kindle (см. Топ100 оплачено в магазине Kindle) # 15 в магазине Kindle> Электронные книги Kindle> Научная литература> Стиль жизни и дом> Дом и сад> Садоводство и огородничество> Теплицы # 26 в магазине Kindle> Электронные книги Kindle> Научная литература> Стиль жизни и дом> Дом и сад> Садоводство и огородничество> Комнатные растения

Как мне этого добиться?Все, что я знаю, это то, что я должен получить 'nodeValue' для каждого тега 'a', но я запутался в получении их всех в моем требуемом формате, я думаю, что я должен использовать массив, но я не в состоянии реализовать его из-замой низкий уровень опыта ..

Руководство и помощь, пожалуйста.Мне нужна только структура xPath и массива (если это можно сделать с помощью массива) или альтернатива массиву.

1 Ответ

0 голосов
/ 03 февраля 2012
//create XPath from you DOM object:
$xpath = new DOMXPath($dom);
foreach($xpath->query("//span[@class='zg_hrsr_rank']") as $rank){
    $rank = $rank->textContent;
    $trail = array();
    foreach($xpath->query('//a',$rank) as $step){
        $trail[] = $step->textContent;
    }
    echo $rank.' '.implode(' > ',$trail)."\n";
}
...