captain_torche Posté 26 Août 2010 Partager 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 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jcaron Posté 27 Août 2010 Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 27 Août 2010 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 31 Août 2010 Auteur Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant