2015-01-15 3 views
1

Я пытаюсь получить подкатегории для каждой категории с XPath из этого HTML кода:PHP Xpath Выберите элементы после

<ul class="simple_list"> 
<li class="category"><span class="category_span">ILUMINAT UTILITAR</span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/indus70">Indus70</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/apliled48">ApliLED48</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/minoris">Minoris</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/canopus_230v">Canopus 230V</a></span></li> 
<li class="category"><span class="category_span">ILUMINAT OFFICE</span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/pavo_1_modul">Pavo 1 modul</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/laminar">Laminar</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/alcor_t">Alcor T</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/grup/Cassiopeia">Cassiopeia</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/sirius_8_module">Sirius 8 module</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/cygnus">Cygnus</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/grup/Aries">Aries</a></span></li> 
<li class="category"><span class="category_span">ILUMINAT INDUSTRIAL</span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/castor_6_module">Castor 6 module</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/grup/Corona">Corona</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/octans">Octans</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/lacerta_3_module">Lacerta 3 module</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/fornax">Fornax</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/grup/Cetus">Cetus</a></span></li> 
<li class="category"><span class="category_span">ILUMINAT DE EXTERIOR</span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/grup/ELMA80">ELMA80</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/solaris_2_module">Solaris 2 module</a></span></li> 
<li class="category"><span class="category_span">BECURI CU LED</span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/grup/LEC">LEC</a></span></li> 
<li class="category"><span class="category_span">ACCESORII</span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/grup/Banda">Banda</a></span></li> 
<li class="subcat"><span class="subcat_span"><a href="/produse/drosel">Drosel</a></span></li> 

Для деталей подкатегории я попытался это:

$xpath->query('//li[@class="subcat" and not(preceding-sibling::li[@class="category"]['.$i.'])]) 

Я хочу извлечь все предметы субтитров под элементом категории ... любая идея xpath была бы замечательной.

На данный момент я делаю это:

for ($i = 0; $i<=$nodecount; $i++) { 
    foreach($xpath->query('//li[@class="category"]['.$i.']') as $category) { 

     echo "<br/>" . "$i - Main Categ Name : " . $category->nodeValue . "<br/>"; 

     //Now get the subcateg names and links 
     $subnodecount = 0; 
     foreach($xpath->query('//li[@class="subcat"]') as $sub_categ_links_on_page) { 
      $subnodecount++; 
     } 


     for ($y = 0; $y<=$subnodecount; $y++) { 
      foreach($xpath->query('//li[@class="subcat" and preceding-sibling::li[@class!="category"]]['.$i.']['.$y.']') as $sub_category) { 

       echo "--- $y - Sub Categ Name : " . $sub_category->nodeValue . "<br/>";    

      }//end foreach 
     }// end FOR $y 

     /////////////////////////////////////////////////////////// 
    }//end foreach 
}// end FOR $i 

Но я застрял на subcategs части ..

Я ищу, чтобы получить этот результат:

1 - Главная Categ Имя: ILUMINAT UTILITAR

--- 1 - Sub Categ Название: ApliLED48

--- 2 - Суб Categ Имя: Minoris

--- 3 - Sub Categ Имя: Канопус 230

--- 4 - Sub Categ Имя: Пава 1 Modul

[и т.д. ]

Живого кода можно найти и вертел, здесь: http://codepad.viper-7.com/i8hweN

+0

Для того, чтобы ваш вопрос яснее, указывают на то, что результаты, которые вы получите, что вы уже пробовали (даже если это ошибка). – J0e3gan

+0

Я не получаю subcategs, я думаю, что упомянул это пару раз. мой запрос Xpath плох –

+0

Так что нет ошибки, jus нет результатов. Вы не упомянули об этом; так что помогает. – J0e3gan

ответ

1

Чтобы получить все тот список ниже категорий можно также использовать != в этом случае:

$xpath->query('//li[@class="subcat" and preceding-sibling::li[@class!="category"]]'); 

Sample Output

В качестве альтернативы, вы можете собрать все эти результаты первого. Тогда вы могли бы просто использовать CSS или простое форматирование для презентации:

$elements = $xpath->query('//li[@class="subcat" and preceding-sibling::li[@class!="category"]]'); 
$list = array(); 
if($elements->length > 0) { 
    foreach($elements as $cat) { 
     $category = $xpath->evaluate('string(./preceding-sibling::li[@class="category"][1])', $cat); 
     $list[$category][] = $cat->nodeValue; 
    } 
} 

// presentation 
$i = $j = 1; 
foreach($list as $category => $subcategory) { 
    echo $i . '. ' . $category . '<br/>'; $i++; 
    foreach($subcategory as $sub) { 
     echo str_repeat('&nbsp;', 5); 
     echo $j .'. ' . $sub . '<br/>'; $j++; 
    } 
    $j = 1; 
} 

Sample Output

+0

Я думаю, что я не был ясен ... Мне нужно знать, в какой категории находится подкатегория. но спасибо за вход! –

+0

@ LiviuZeJah, то что же должно быть окончательным выходом? – Ghost

+0

@ LiviuZeJah вы можете проверить мою ревизию на выходе образца, должно быть относительно близко на выходе вопроса, который вы дали – Ghost

Смежные вопросы