Hola, pues a mi si me funciona, he probado con el código que tu pusiste al principio y va de lujo, pruébalo y verás...
Código PHP:
<?php
function QuitarDoblesSaltos($string){
$patron = "#(<br />((\n)*))+#";//Patrón de búsqueda, que mediante expresión regular busca varios saltos seguidos
$sustituto = "<br />";//sustituye por un solo salto
$cadenasalida=preg_replace ($patron,$sustituto,$string);
return $cadenasalida;
}
$txt1 = "El gato<br /><br /><br /><br /><br />que esta triste y azul"; // BRs (saltos de linea) en la misma linea
$txt2 = "El gato<br />
<br />
<br />
<br />
<br />que esta triste y azul<br /><br />"; // BRs (saltos de linea) en cada linea.
echo QuitarDoblesSaltos($txt1) ."<hr />";
echo QuitarDoblesSaltos($txt2) ."<hr />";
?>
Mi recomendación es que pases la función antes de hacer un insert en la base de datos y ya está.
Asi si hay más de dos <br /> seguidos haya o no haya salto de linea (\n) entre ellos en db solo se te guardará uno.
El código lo he probado y funciona, te funciona a ti este código que he puesto?
Es que me extraña que digas que no funciona porque lo he probado dos veces.
Un saludo