2009-09-01 10 views

Répondre

5

Quelque chose comme ceci:

preg_match('/(<br>\s*){3}/i', $str, $matches); 

Ceci est un peu plus clément que votre exemple - il fait un match insensible à la casse et correspond à aucun espace entre les <br> s, et pas seulement les nouvelles lignes.

Pour 3 ou plus au lieu de 3:

preg_match('/(<br>\s*){3,}/i', $str, $matches); 
+0

est-il pas essayer d'obtenir le texte entre les balises
? –

+0

Je n'essaie pas de remplacer tous les tags
. Juste ceux qui apparaissent 3 fois de suite –

+0

@Yannick Je ne veux pas le texte entre les balises, je veux juste remplacer les 3 balises
avec mon propre formatage –

3

Si vous voulez juste pour remplacer les instances alors vous êtes mieux <BR> de faire un remplacement de chaîne. C'est beaucoup plus rapide que regex.

$newstr = str_replace('<BR>', 'replacement...', $str); 
1

Mon avis sur la question

<?php 

$html = <<<HTML 
<BR> 
<BR> 
<BR> 
<p>^^ Replace 3 consecutive BR tags with nothing</p> 
<BR> 
<BR> 
<p>^^ those should stay, there's only 2 of them</p> 
<BR> 
    <BR> 


     <BR> 
<p>^^ But those should go, whitespace and newlines shouldn't matter 
HTML; 

echo preg_replace("/(?:<br>\s*){3}/i", '', $html); 
Questions connexes