Ver Mensaje Individual
  #8 (permalink)  
Antiguo 16/03/2008, 21:28
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Volver cambios que realiza NL2BR de nuevo. Problemas

Cita:
Iniciado por darkgaze Ver Mensaje
De todas formas lo que más me extraña es que ... si pongo el replace por "", (Vacio), sale bien, parrafeado y todo!... O_O... pero no puede serporuqe en la bbdd se ha guardado con <br /> !!.

Es curioso...
Si puede ser, y por eso funciona

Verás, la función nl2br() agrega un <br /> cada vez que encuentra un caracter de salto de línea "\n", pero, luego de ejecutarla, el caracter de salto de linea sigue ahí.

Tenemos:

Código PHP:
echo "Texto, y más texto,\notra linea de texto"
que imprime
Código:
Texto, y más texto,
otra línea de texto
Al aplicar la función nl2br() a esa cadena, obtenemos esto:
Código:
Texto, y más texto,<br />
otra línea de texto
que sería lo mismo que:
Código PHP:
echo "Texto, y más texto,<br />\notra línea de texto"
Dicho esto, no debe extrañar que al eliminar los tags <br /> sigan permaneciendo los saltos de línea originales \n.

El propio manual lo dice:

Cita:
Iniciado por php.net/nl2br
nl2br — Inserta saltos de línea de HTML antes de cada salto de línea de la cadena
Y para terminar, aquí tienes una pequeña función para borrar los saltos de línea creados con nl2br():
Código PHP:
function br2nl($texto) {
    return 
preg_replace('/<br\s*\/?>/i'''$texto);
}
 
# Uso
$var nl2br("Texto\nmás texto");
echo 
br2nl($var); 
Saludos,