Salut,
Après pas mal de temps à bidouiller mon code, je commence à desèsperer quelque peu.
J'ai un texte avec la structure suivante :
Je peux avoir plusieurs chapitres. Ce que je voudrais, c'est remplacer toutes les balises [chapitre] par une balise <p> et toutes les balises [titre] par une balise <h3>.[chapitre][titre]Mon Titre[/titre]
mon texte[/chapitre]
[chapitre][titre]Mon titre 2[/titre]
Mon texte 2[/chapitre]
Je voudrais donc obtenir en sortie :J'utilise donc la fonction preg_replace avec comme regex :<p><h3>Mon Titre</h3>
Mon Texte
</p>
<p><h3>mon titre 2</h3>
Mon texte 2
</p>
et comme code de sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part '#\[chapitre\](.*?)\[titre\](.*?)\[/titre\](.*?)\[/chapitre\]#isU'
Et bien sur, cela ne fonctionne pas du tout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part '<p>$1<h3>$2</h3>$3</p>'
Dans mon test, j'ai 3 chapitres. Il ne convertit que la derniere balise [titre], et il crée une seule balise <p> tout au début, pour la refermer juste avant la seule balise [titre] qu'il convertit correctement. Donc j'ai quelques balises [titre] et [chapitre] en clair, qui restent telles quelles dans le texte.
Je doute bien que mon code regex doit être mauvais, mais j'ai beau retourner la situation dans tous les sens, je ne comprends. Autre point noir, l'utilité du code U à la fin de ma regex. J'ai bien compris l'utilité de i et s, mais celle de U est confuse. Sert elle à s'arreter à la première balise fermante rencontrée ? J'ai pas tout compris![]()
Merci beaucoup. Et n'hésitez pas à demander plus de code si vous en avez besoins. Merci.
Partager