2010-01-02 14 views
0

j'ai une liste non ordonnée imbriqué comme celui-ci (version simplifiée/la profondeur est variable):Comment un nid listes imbriquées en php

<ul> 
<li> 
<a href="#">Root</a> 
    <ul> 
    <li> 
     <a href="#">Page A</a> 
     <ul> 
     <li> 
     <a href="#" title="Page A1">Page 1 2</a> 
     </li> 
     </ul> 
    </li> 
    </ul> 
</li> 
</ul> 

En utilisant PHP, est-il un bon moyen de « exploser » ce liste imbriquée dans (pour cet exemple) 3 listes?

Merci pour votre aide

Edit:

Le résultat attendu sera:

<ul> 
    <li> 
    <a href="#">Root</a> 
    </li> 
</ul> 

<ul> 
    <li> 
     <a href="#">Page A</a> 
    </li> 
</ul> 

<ul> 
    <li> 
    <a href="#" title="Page A1">Page 1 2</a> 
    </li> 
</ul> 
+0

-1 question peu claire –

+0

Et quel est votre résultat attendu ? – Gumbo

+1

Je pense que c'est une manipulation assez compliquée quelle que soit l'approche que vous utilisez, mais un bon début serait de charger votre document dans http://php.net/dom puis d'extraire vos éléments ul avec une requête xpath pour '// ul' . Vous devrez alors effectuer un travail supplémentaire pour supprimer les éléments ul des résultats renvoyés, déplacer les noeuds récupérés dans de nouveaux documents et les sérialiser pour les annoter. –

Répondre

-1

Essayez:

$lists = '<ul> 
<li> 
<a href="#">Root</a> 
    <ul> 
     <li> 
      <a href="#">Page A</a> 
      <ul> 
       <li> 
       <a href="#" title="Page A1">Page 1 2</a> 
       </li> 
      </ul> 
     </li> 
    </ul> 
</li> 
</ul>'; 

$list_array = explode('<ul>', $lists); 
foreach($list_array as $list){ 
    // Now you have a single list, but missing the <ul> 
    // at the start. replace that and assign to a variable or whatever. 
} 
+0

Cela ne produira pas la sortie désirée - les deux premiers résultats n'auront pas de balises de fermeture, et le troisième aura 3 jeux de balises de fermeture. –

+0

Oui, et il y a autre chose: si chaque liste contient plusieurs éléments, cela ne fonctionnera pas – Amir

+0

Tout à fait raison. Le café couvait encore ... Je dois être patient et attendre de boire un peu le matin. – menkes