Buenas noches,
¿Como puedo hacer que si en una cadena hay 4 o más (>= 4) lineas en blanco "\n" seguidas estas se transformen en 3 con php
sería algo así:
"Hola,
Acá de nuevo, arriba hay 4 lineas en blanco"
"Hola de nuevo,
Acá de nuevo, arriba hay 8 lineas en blanco"
el programa debería transformarlo en esto =>
"Hola de nuevo,
Arriba hay ahora 3 lineas en blanco"
puedes usar regex para reemplazar
echo preg_replace($patrón, $sustitución, $cadena);
con patron "/\s{4,}/m"
sería algo como
<?php
$texto = " ";
$salida = preg_replace("/\ {4,}/m", " \n", $texto);
echo $salida;
echo "hola"; // para ver si el salto de linea fue efectivo o no
eso haría todos los reemplazos necesarios directamente
No funciono creo que algo estoy poniendo mal porque los saltos de lineas se mantienen
"Texto
Texto" <= (7) saltos de lineas seguidos que están vacíos.
"Texto
Texto" <= Transforma en (3) saltos de lineas seguidos.
<?php
$string = '• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.'."\r\n\n\n\n\n\n\n\n\n".'• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.'."\r\n".'• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.';
echo nl2br($string);
?>
<br><br><br><br>
<?php
$salida = preg_replace('/\ {4,}/m', "\n", $string);
echo nl2br($salida);
?>
Los saltos de lineas se mantienen ¿qué estoy haciendo mal?
error mio, entendi espacios en blanco "\ {4,}" ahi dice "cuatro o mas espacios en blanco" era "\n{4,}" que es "4 o mas saltos de linea"
y el reemplazo tambien lo fallé cambiaba 4 o mas espacios por un salto de linea, tu quieres 4 o mas saltos de linea por solo 3
claramente como los trato como \n no hará efecto sobre los \r, así que te recomendaría eliminar los \r (con un reemplazo a vacio "") pero queda de tu parte y necesidad
Cita de: engel lex en 9 Diciembre 2019, 02:02 AM
error mio, entendi espacios en blanco "\ {4,}" ahi dice "cuatro o mas espacios en blanco" era "\n{4,}" que es "4 o mas saltos de linea"
y el reemplazo tambien lo fallé cambiaba 4 o mas espacios por un salto de linea, tu quieres 4 o mas saltos de linea por solo 3
claramente como los trato como \n no hará efecto sobre los \r, así que te recomendaría eliminar los \r (con un reemplazo a vacio "") pero queda de tu parte y necesidad
Hice así pero no creo que tampoco me este funcionando bien,
<?php
$string = '• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.'."\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n".'• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.'."\r\n".'• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.';
echo nl2br($string);
?>
<br><br><br><br>
<?php
$salida = str_replace("\n\n\n\n", "\n\n\n", $string); // además viendo no va a estar siguiendo un patrón de que si son más de 4, va a funcionar solamente si son 4
echo nl2br($salida);
?>
$texto = '• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.'."\r\n\n\n\n\n\n\n\n\n".'• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.'."\r\n".'• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.';
echo "----$texto---\n";
$salida = preg_replace("/\n{4,}/m", "\n\n\n", $texto);
echo "\n++++++++++++++\n----$salida---\n";
resultado
----• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.
• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.
• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.---
++++++++++++++
----• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.
• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.
• Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod.---
le coloqué un monon de guines y simbolos de suma para que fuera mas visible
¡Funciona perfecto! Yo para las expresiones regulares soy medio duro de entender, muchas gracias, otra vez! ;-) ;-) ;-) ;-)
Cita de: MiguelCanellas en 9 Diciembre 2019, 04:10 AM
¡Funciona perfecto! Yo para las expresiones regulares soy medio duro de entender, muchas gracias, otra vez! ;-) ;-) ;-) ;-)
sinceramente las regex son algo de internalizar XD muchas veces es mas fácil explicar cosas de física cuántica que el regex XD