Foros del Web » Programando para Internet » PHP »

Evitar más de un espacio en cadena de texto

Estas en el tema de Evitar más de un espacio en cadena de texto en el foro de PHP en Foros del Web. Hola: Quería saber como usar la función preg_replace (o la necesaria) para obtener una cadena de texto "limpia". Si el usuario mete varios espacios seguidos, ...
  #1 (permalink)  
Antiguo 27/04/2010, 05:29
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Evitar más de un espacio en cadena de texto

Hola:

Quería saber como usar la función preg_replace (o la necesaria) para obtener una cadena de texto "limpia". Si el usuario mete varios espacios seguidos, que se trunque a solo un espacio entre palabra y palabra.

Gracias a todos.
  #2 (permalink)  
Antiguo 27/04/2010, 05:39
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
Respuesta: Evitar más de un espacio en cadena de texto

así en una prueba rápida he probado con:
Código PHP:
<?php
$a 
'a  b c  d         e';

$pattern '([\s\n]+)';
$replace ' ';
$a preg_replace($pattern$replace$a);
echo 
$a."\n";
?>
y al parecer va bastante bien ;)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 27/04/2010, 05:44
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Evitar más de un espacio en cadena de texto

Vale, muchas gracias ZiTAL :)
Si no me funciona ya volveré aquí a pedirte cuentas xDDDD

Es broma, gracias por contestar!
  #4 (permalink)  
Antiguo 27/04/2010, 07:41
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Evitar más de un espacio en cadena de texto

Cita:
Iniciado por ZiTAL Ver Mensaje
así en una prueba rápida he probado con:
Código PHP:
<?php
$a 
'a  b c  d         e';

$pattern '([\s\n]+)';
$replace ' ';
$a preg_replace($pattern$replace$a);
echo 
$a."\n";
?>
y al parecer va bastante bien ;)
y los delimitadores de la regex? aparte solo quiere espacios, yo te recomandaria que probaras con esta expresion

Código PHP:
Ver original
  1. $pattern = '/\s{2,}/';
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 27/04/2010, 07:47
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 2 meses
Puntos: 62
Respuesta: Evitar más de un espacio en cadena de texto

Cita:
Iniciado por Hidek1 Ver Mensaje
y los delimitadores de la regex? aparte solo quiere espacios, yo te recomandaria que probaras con esta expresion

Código PHP:
Ver original
  1. $pattern = '/\s{2,}/';
la verdad es que no tengo mucha idea de expresiones regulares tu aporte parece mucho más claro por lo tanto mejor, me lo apunto para próximas regex :)
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #6 (permalink)  
Antiguo 28/04/2010, 01:31
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Evitar más de un espacio en cadena de texto

Gracias por responder.

Qué diferencia hay entre uno y otro? Yo de expresiones regulares no se prácticamente nada...
  #7 (permalink)  
Antiguo 28/04/2010, 07:18
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Evitar más de un espacio en cadena de texto

Código PHP:
Ver original
  1. $pattern = '([\s\n]+)'; // captura todos los espacios y saltos de linea en unix, ya que para windows faltaria agregar un \r
  2.  
  3. $pattern = '/\s{2,}/'; // captura todo lo que sean 2 o mas espacios juntos
__________________
More about me...
~ @rhyudek1
~ Github
  #8 (permalink)  
Antiguo 28/04/2010, 09:02
 
Fecha de Ingreso: marzo-2008
Mensajes: 96
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Evitar más de un espacio en cadena de texto

Hola de nuevo:

La expresión '([\s\n]+)' me coge también los saltos de línea, así que no me sirve, necesito los saltos de línea xDDD

La expresión '/\s{2,}/' funciona bien excepto en un caso:
Si pongo letras+espacio+salto de línea+letras me convierte espacio+salto de línea en espacio.
Cómo se puede arreglar eso?

EDITO:
Si pongo varios saltos de línea seguidos también me los convierte en un espacio nada más... -.-'

Etiquetas: espacio, cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:37.