Quitar saltos de línea si son más de 2 <br>

WWWW Seguir

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.258
Necesito borrar todos los saltos de linea después del segundo salto.

Bueno recibo el contenido de un textarea por POST, después utilizo la función nl2br(); para pasar los santos \n a <br/>.

Todo bien hasta aquí.

La cuestión es que si en el textarea se realizaron 5 saltos de linea, los mismo serán remplazados por <br/>, pero quisiera que si son más de 2, borrar los demás.

Ejemplo:

Código erróneo:

HTML:
hola
<br/>
<br/>
<br/>
como estas?
<br>
amigo

Remplazando los 3 <br/> por 2, igual si fueran 100 <br/> los remplazara por 2<br/>, y cuando sea solo 1 <br/> dejarlo así.

Código esperado:

HTML:
hola
<br/>
<br/>
como estas?
<br>
amigo

Buscando por la web, encontré que remplace todos los <br/> por solo 1 no importando cuantos hayan, pero lo que busco es que se respete el doble salto <br/><br/> si lo contiene la cadena.

Espero se entienda lo que quiero lograr y desde ya, gracias por su ayuda.
 

lombervid

Zeta
Verificación en dos pasos activada
Desde
29 Abr 2011
Mensajes
1.509
Puedes hacerlo con expresiones regulares.

Si el ejemplo que encontraste es con expresiones regulares, ese mismo lo puedes modificar para que haga lo que quieres.

preg_replace
 

Javieer

Gamma
Programador
Desde
2 Ago 2013
Mensajes
161
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Antes de pasarlo por el nl2br usa preg_replace asi:

PHP:
$tu_string = preg_replace("/\n{2,}/", "\n", $tu_string);
 

hugo1

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
28 Dic 2012
Mensajes
90
PHP:
$_POST['data'] = preg_replace("/(\r\n){3,}/", "\n\n", $_POST['data']);  
$_POST['data'] = nl2br($_POST['data']);
 

WWWW

Pi
Verificación en dos pasos activada
Desde
4 Mar 2013
Mensajes
5.258
[MENTION=8317]lombervid[/MENTION] [MENTION=46425]Javieer[/MENTION] [MENTION=36180]hugo1[/MENTION]

Gracias por responder, todas sus respuestas son similares, pero la que si me funciono fue la de [MENTION=36180]hugo1[/MENTION], ya que había que remplazar los "\r\n" y con la expresión regular resuelve el problema que tenia, (borrar todos los saltos de linea, después de 2 saltos)

Ya que al parecer, son muy requeridas estas expresiones regulares, ya sea para validar el formato de un email o usarlo en un htaccess, etc.

Me preguntaba si, existe algún manual oficial o algo parecido para aprender expresiones regulares? Saludos.
 
Arriba