captain_torche Posté 26 Août 2010 Posté 26 Août 2010 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 ?
jcaron Posté 27 Août 2010 Posté 27 Août 2010 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.
captain_torche Posté 27 Août 2010 Auteur Posté 27 Août 2010 Oui, j'ai trouvé une classe PHP pour parser du HTML (Et qui dit qu'elle fonctionne avec le code potentiellement mal formaté juste avant de quitter le boulot ce soir : http://simplehtmldom.sourceforge.net/ Je vérifierai lundi qu'elle tient ses promesses
captain_torche Posté 31 Août 2010 Auteur Posté 31 Août 2010 Je reviens donner des nouvelles : malgré quelques petits soucis, j'ai parfaitement réussi à m'en sortir avec la classe simplehtmldom citée plus haut.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant