Esto puede parecer un engaño, pero tenga la seguridad de que no lo es: he buscado en SO y en el resto de la web una respuesta a mi problema y terminé encontrando las mismas "soluciones" insuficientes una y otra vez. De todos modos, aquí va:
Estoy guardando la entrada del usuario de un área de texto a una base de datos MySQL (dentro de un entorno de WordPress, pero eso no debería importar a este problema, creo). Más tarde se recupera de la base de datos para mostrarse a los administradores en el back-end del sitio. El problema ocurre cuando los usuarios envían texto con saltos de línea (es decir, presionan la tecla Intro).
Una cadena de muestra podría verse así:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
No hay caracteres de final de línea ("\ n", "\ r" o similares) en la cadena.
Lo estoy usando nl2br()
para generar salida HTML, pero eso no es suficiente. El resultado entonces es:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
¿Cuál, hasta donde yo entiendo, es el nl2br()
resultado esperado , ya que eso inserta las etiquetas y no se supone que reemplace los saltos de línea en primer lugar?
Sin embargo, el formato que necesito sería este:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
Si la cadena tenía caracteres EOL como "\ n", la golpearía con o str_replace()
o preg_replace()
y terminaría, pero no tengo idea de qué aguja alimentar cualquiera de esas funciones si no hay caracteres allí en primer lugar.
Puedo acceder manualmente al campo relevante en la base de datos, presionar Retroceso para cada salto de línea y lo que más adelante quiero hacer con la cadena funciona. Entonces sé que necesito el formato anterior.