Estoy desarrollando un single serving site en PHP que simplemente muestra los mensajes publicados por los visitantes (lo ideal es que rodeen el tema del sitio web). Cualquiera puede publicar hasta tres mensajes por hora.Eliminando saltos de línea redundantes con expresiones regulares
Como el sitio web solo tendrá una página, me gustaría controlar la longitud vertical de cada mensaje. Sin embargo, sí quiero preservar al menos parcialmente los saltos de línea en el mensaje original. Un compromiso sería permitir dos saltos de línea, pero si hay más de dos, reemplazarlos con un total de dos saltos de línea en una fila. Stack Overflow implementa esto.
Por ejemplo:
"Porcupines \ nare \ n \ n \ n \ nporcupiney."
sería cambiado a
"puercoespines < br /> son < br /> < br /> porcupiney."
Un aspecto complicado de comprobar si hay saltos de línea es la posibilidad de que se recopilen y almacenen como \ r \ n, \ r, o \ n. Pensé en convertir todos los saltos de línea en < br /> s usando nl2br(), pero eso parecía innecesario.
Mi pregunta: Usando expresiones regulares en PHP (con funciones como preg_match() y preg_replace()), ¿cómo puedo verificar instancias de más de dos líneas seguidas (con o sin espacio en blanco entre ellas) y luego cámbielos a un total de dos saltos de línea?
¡Gracias, caos! Eso funciona exactamente como se desea. Tu respuesta original funcionó también. – tevan
La respuesta original no cumplió con su criterio 'con o sin espacio en blanco'. :) – chaos
Pero cuando solo hay un salto de línea, ¿lo cambia a dos? ¿No debería dejar un solo descanso como está? – NonCoder