Pregunta

Estoy desarrollando un sitio de publicación única en PHP que simplemente muestra mensajes que publican los visitantes (idealmente en torno al tema del sitio web). Cualquiera puede publicar hasta tres mensajes por hora.

Dado que el sitio web solo tendrá una página, me gustaría controlar la longitud vertical de cada mensaje. Sin embargo, 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, reemplácelos con un total de dos saltos de línea seguidos. Stack Overflow implementa esto.

Por ejemplo:

" Puercoespines \ nare \ n \ n \ n \ nporcupiney. "

se cambiaría a

" Puercoespines < br / > son < br / > < br / > puercoespín. quot;

Un aspecto complicado de verificar los 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 a & Lt; br / & Gt; s usando nl2br (), pero eso parecía innecesario.

Mi pregunta: Utilizando expresiones regulares en PHP (con funciones como preg_match () y preg_replace ()), ¿cómo puedo verificar si hay instancias de más de dos saltos de línea seguidos (con o sin espacio en blanco entre ellos) y luego cambiarlos a un total de dos saltos de línea?

¿Fue útil?

Solución

preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text)

Otros consejos

Algo así

preg_replace('/(\r|\n|\r\n){2,}/', '<br/><br/>', $text);

debería funcionar, creo. Aunque no recuerdo exactamente la sintaxis de PHP, podría necesitar un poco más de escape: - /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top