Aller au contenu

Expression régulière pour transformer une liste en syntaxe SPIP (ou syntaxe Wiki)


Sujets conseillés

Posté

Je galère avec une expression régulière :

J'ai du code HTML que je souhaite intégrer à SPIP. Je veux donc le convertir en syntaxe SPIP, qui est relativement proche de la syntaxe de Wikipédia.

Je n'ai pas de souci pour les balises les plus simples, mais j'ai un problème pour convertir les listes imbriquées.

<ul>
<li>Element 1</li>
<li>Element 2</li>
<li>Element 3
<ul>
<li>Sous-élément 1</li>
<li>Sous-élément 2</li>
</ul>
</li>
<li>Element 4</li>
</ul>

Je voudrais obtenir ceci :


-* Element 1
-* Element 2
-* Element 3
-** Sous-élément 1
-** Sous-élément 2
-* Element 4

Actuellement, mon code capture la première occurence du tag <ul>, ainsi que la première occurrence du tag fermant '</ul>', ce qui occasionne quelques soucis. Comment faire pour respecter l'imbrication ?

Posté

Pas vraiment convaincu qu'utiliser des regex soit le plus simple (un parser HTML serait plus adapté), mais tu peux tenter:

#(<ul>.*?<ul>.*?)<li>(.*?)</li># à remplacer par '$1\n-** $2'

qui devrait te prendre tous les éléments de 2e niveau, puis

#(<ul>.*?)<li>(.*?)</li># à remplacer par '$1\n-* $2'

qui devrait s'occuper du premier niveau

Evidemment il te reste les <ul> et </ul> à virer à la fin.

NB: j'ai pas testé du tout.

Jacques.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...