Petite question au sujet des expressions régulières. Pour l'écriture d'un parseur, je souhaite supprimer des balises <br /> qui se mettent dans une liste <ul> ou <ol>, ce qui rend le code html non valide.

Exemple :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Valide :
<ul>
  <li>elem 1<br />test</li>
  <li>elem 2</li>
</ul>
 
Non Valide :
<ul>
<br />
  <li>elem<br />test</li>
  <li>elem</li>
  </br>
</ul>

J'ai trouvé l'expression régulière pour supprimer les <br />, mais comment faire pour ne les supprimer que dans les balises <ul>...</ul> ou <ol>...</ol> ? J'ai essayé plusieurs codes mais ça ne marche pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
// Supprime tout les <br />
$text = preg_replace('`(^|\W)(<br />)(\W|$)`si','$1 $3', $text);
 
// Ne marche pas
$text = preg_replace('`<ul>(^|\W)(<br />)(\W|$)</ul>`si','$1 $3', $text);