Çoğaltılamaz HTML etiketleri temizlemek için PHP düzenli ifadeler

3 Cevap php

Ben çalışmak için düzenli bir ifade almak için çalışıyorum, ama şans bir sürü sahip değilim.

Ben okuyorum kaynak dosya (kötü biçimlendirilmiş, ama orada yapabileceği bir şey) elemanları arasında kaynağında şu var

<BR>
<BR>
<BR>

nasıl bir php düzenli ifade ile bu maç?

3 Cevap

Böyle bir şey:

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

Bu biraz daha yumuşak sizin örnek daha - bu bir harf duyarsız eşleşmesinin <br> s, sadece satırsonu arasında herhangi bir boşluk eşleşir.

3 yerine 3 veya daha fazla maç için:

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

Sadece <BR> örneklerini değiştirmek istiyorsanız, o zaman bir dize değiştirme yapsak daha iyi. Bu regex sonra çok daha hızlıdır.

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

Bunun üzerine benim almak

<?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 );