Expression régulière pour Bbcode

Eléphant du PHP | 112 Messages

26 mars 2009, 14:16

Hello,

sur un projet que je réalise, j'autorise les membres à pouvoir éditer des fiches via du bbcode.
je souhaiterais réaliser un filtre au niveau des retours à la ligne dont voici les caractéristiques.

après avoir appliquer mon filtre bbcode je souhaite supprimer les <br/> qui se trouvent après les balises title qui elles sont gérées via le css.

Exemple
Code initiale

Code : Tout sélectionner

test [h1] Titre[/h1] suite texte [h2]Titre 2[/h2] suite ....
code avant d'appliquer ma fonction

Code : Tout sélectionner

test <h1> Titre</h1> suite texte <h2>Titre 2</h2> suite ....
et après le passage du texte dans ma fonction

Code : Tout sélectionner

test <br/> <h1>Titre</h1> suite texte<br/> <h2>Titre 2</h2> suite <br/> .... ....
j'ai essayé quelque chose mais vu que je ne suis pas un expert en regexp je demande votre aide:
function convertBR($text) {
	$res = str_replace("\n", "<br/>", $text);
	$res = preg_replace("/(<h1>|<h2>)(<br/>|\\n)*([a-zA-Z<\.)*/", "\\1\n\\3", $res);
	 return $res;
}
d'avance merci
blog nouvelles technologies : http://www.jofischer.fr

Eléphant du PHP | 112 Messages

30 mars 2009, 11:44

ça n'inspire personne ?
blog nouvelles technologies : http://www.jofischer.fr

Eléphant du PHP | 141 Messages

31 mars 2009, 09:49

Dans ta regexp, tu n'as pas besoin d'échapper l'antislash du retour à la ligne car \n est un caractère spécial. Je suis pas sûr que ça règle le problème mais essaie quand même :
"/(<h1>|<h2>)(<br/>|\n)*([a-zA-Z<\.)*/"