Luego de investigar en varios repositorios y páginas webs de internet al terminar nos encontramos con la resolución que te enseñamos a continuación.
En teoría, su expresión regular funciona, pero el problema es que no todos los sistemas operativos y navegadores envían solo n al final de string. Muchos también enviarán un r.
Tratar:
He simplificado este:
preg_replace("/(r?n)2,/", "nn", $text);
Y para abordar el problema de algunos envíos r solamente:
preg_replace("/[rn]2,/", "nn", $text);
Basado en su actualización:
// Replace multiple (one ore more) line breaks with a single one.
$text = preg_replace("/[rn]+/", "n", $text);
$text = wordwrap($text,120, '
', true);
$text = nl2br($text);
Use R (que representa cualquier secuencia de final de línea):
$str = preg_replace('#R+#', '', $str);
Se encontró aquí: Reemplazar dos líneas nuevas con etiquetas de párrafo
Documentación de PHP sobre secuencias de Escape:
R (salto de línea: coincide con n, r y rn)
Esta es la respuesta, según entiendo la pregunta:
// Normalize newlines
preg_replace('/(rn|r|n)+/', "n", $text);
// Replace whitespace characters with a single space
preg_replace('/s+/', ' ', $text);
Esta es la función real que uso para convertir nuevas líneas en elementos de párrafo y salto de línea HTML:
/**
*
* @param string $string
* @return string
*/
function nl2html($text)
nn)(s+)?/', '/rn
Al final de la post puedes encontrar las críticas de otros creadores, tú también eres capaz mostrar el tuyo si te gusta.