Dönüştürmek istedi
<br/> <br/> <br/> <br/> <br/>
içine
<br/>
Bir düzenli ifade ile yapabilirsiniz:
preg_replace("/(<br\s*\/?>\s*)+/", "<br/>", $input);
Eğer kaynak HTML geçmesi halinde, bu, bu onlardan her koşmak yerine tek ile bir dize döndürür.
Benimki sadece bazı farklı br biçimlendirme için muhasebe, neredeyse tam levik 's (1) aynıdır:
preg_replace('/(<br[^>]*>\s*){2,}/', '<br/>', $sInput);
Böyle levik cevap olarak <br/> ile yerine preg_replace (veya benzeri) kullanın ardından, <br/>, bir veya daha fazla kez maç için normal bir ifade kullanabilirsiniz.
Geliştirilmiş okunabilirlik, kısa, ne olursa olsun nitelikleri doğru çıktı üretir:
preg_replace('{(<br[^>]*>\s*)+}', '<br/>', $input);
preg_replace olmadan, ama 5.0.0 + sadece PHP çalışır
$a = '<br /><br /><br /><br /><br />'; while(($a = str_ireplace('<br /><br />', '<br />', $a, $count)) && $count > 0) {} // $a becomes '<br />'
Thanks all.. Used Jakemcgraw's (+1) version
Sadece durum insensative seçeneği eklendi ..
{(<br[^>]*>\s*)+}i
O Düzenli ifadeler test için büyük bir araçtır:
http://www.spaweditor.com/scripts/regex/index.php
Muhtemelen Düzenli İfade kullanmak istiyorum. Ben aşağıdaki test değil, ama ben doğru olduğuna inanıyorum.
$text = preg_replace( "/(<br\s?\/?>)+/i","<br />", $text );
Hızlı olmayan düzenli ifade yaklaşımı:
while(strstr($input, "<br/><br/>")) { $input = str_replace("<br/><br/>", "<br/>", $input); }