Birden
dönüştürmek için nasıl

8 Cevap php

Dönüştürmek istedi

<br/>
<br/>
<br/>
<br/>
<br/>

içine

<br/>

8 Cevap

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