elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...?  (Leído 3,788 veces)
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
[Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...?
« en: 9 Diciembre 2019, 00:31 am »

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"


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...?
« Respuesta #1 en: 9 Diciembre 2019, 00:57 am »

puedes usar regex para reemplazar

Código
  1. echo preg_replace($patrón, $sustitución, $cadena);

con patron "/\s{4,}/m"

sería algo como

Código
  1. <?php
  2. $texto = "       ";
  3. $salida = preg_replace("/\ {4,}/m", "   \n", $texto);
  4. echo $salida;
  5. echo "hola"; // para ver si el salto de linea fue efectivo o no


eso haría todos los reemplazos necesarios directamente


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...?
« Respuesta #2 en: 9 Diciembre 2019, 01:34 am »

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.


Código
  1. <?php
  2. $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.';
  3.  
  4. echo nl2br($string);
  5. ?>
  6. <br><br><br><br>
  7. <?php
  8. $salida = preg_replace('/\ {4,}/m', "\n", $string);
  9. echo nl2br($salida);
  10. ?>
  11.  

Los saltos de lineas se mantienen ¿qué estoy haciendo mal?
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...?
« Respuesta #3 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
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...?
« Respuesta #4 en: 9 Diciembre 2019, 02:33 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,

Código
  1. <?php
  2. $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.';
  3.  
  4. echo nl2br($string);
  5. ?>
  6. <br><br><br><br>
  7. <?php
  8. $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
  9. echo nl2br($salida);
  10. ?>
  11.  
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...?
« Respuesta #5 en: 9 Diciembre 2019, 04:00 am »

Código
  1. $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.';
  2. echo "----$texto---\n";
  3. $salida = preg_replace("/\n{4,}/m", "\n\n\n", $texto);
  4. echo "\n++++++++++++++\n----$salida---\n";

resultado

Código:
----• 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
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...?
« Respuesta #6 en: 9 Diciembre 2019, 04:10 am »

¡Funciona perfecto! Yo para las expresiones regulares soy medio duro de entender, muchas gracias, otra vez!  ;-) ;-) ;-) ;-)
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [Pregunta]: ¿Como puedo hacer que si son 4 espacios seguidos...?
« Respuesta #7 en: 9 Diciembre 2019, 04:16 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
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines