Foros del Web » Programando para Internet » PHP »

Detectar espacios al principio y final de una cadena

Estas en el tema de Detectar espacios al principio y final de una cadena en el foro de PHP en Foros del Web. Hola que tal, tengo un sistema de usuarios que he arraglado poco a poco, pero para evitar que los usuarios se registren con nombres raros ...
  #1 (permalink)  
Antiguo 06/06/2009, 09:56
Avatar de berper  
Fecha de Ingreso: abril-2009
Ubicación: Mexico
Mensajes: 74
Antigüedad: 15 años
Puntos: 2
Detectar espacios al principio y final de una cadena

Hola que tal, tengo un sistema de usuarios que he arraglado poco a poco, pero para evitar que los usuarios se registren con nombres raros he puesto varios "filtros" para que no usen caracteres especiales, muchos espacios juntos....

Pero ahora quiero que detecte si el usuario puso un espacio al principio o al final de su nombre. Se que se puede usar trim(), pero esto solo elimina los espacios sin avisarle al usuario.

Probe con esto pero no funciona
Código PHP:
<?php
$texto
=' bla bla bla';
if(
trim($texto)){echo 'Usuario no valido';}else{echo 'Usuario valido';}
?>
Hay alguna funcion que haga esto?

Saludos.
  #2 (permalink)  
Antiguo 06/06/2009, 10:11
 
Fecha de Ingreso: junio-2009
Ubicación: Mar del Plata
Mensajes: 33
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Detectar espacios al principio y final de una cadena

Buenas, el código que pusiste es incorrecto porque trim devuelve como resultado una cadena, por lo que al evaluar el condicional será siempre verdadero.

Antes una pregunta, ¿Queres sacarle los espacios en blanco para almacenarlo, o evaluar si tiene espacios en blanco y enviar una notificación?
  #3 (permalink)  
Antiguo 06/06/2009, 10:11
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Detectar espacios al principio y final de una cadena

Bueno amigo
yo le recomiendo las expresiones regulares.
Mire un ejemplo.

Código PHP:
$string "userNaME4234432_";
if (
preg_match('/^[a-z\d_]{4,28}$/i'$string)) {
    echo 
"example 1 successful.";
}else
{
echo 
"Error";


El ejemplo hace lo siguiente.

permitir usuarios de 4 hasta 28 caracteres de longitud, alfanuméricos y permitir guiones bajos.
  #4 (permalink)  
Antiguo 06/06/2009, 10:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Detectar espacios al principio y final de una cadena

lee, expresiones regulares
http://www.forosdelweb.com/f18/aport...s-pcre-646110/

Código PHP:
$foo ' Bar ';
if (
preg_match('/^\s|\s$/'$foo))
{
  
// tiene espacios!

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/06/2009, 10:18
Avatar de berper  
Fecha de Ingreso: abril-2009
Ubicación: Mexico
Mensajes: 74
Antigüedad: 15 años
Puntos: 2
Respuesta: Detectar espacios al principio y final de una cadena

Gracias por sus respuestas.

RodrigoQ:
Lo que quiero es que revise el nombre de usuario y si se detectan espacios al principio o al final lo notifique con un mensaje de error.

gjx2:
Ese codigo funcionaria, pero quiero que si puedan usar espacios en otra parte de la cadena que no sea al principio o final.

pateketrueke:
Este codigo me funciona perfecto, me pondre a leer un poco mas de preg_match pera entenderle mejor al codigo.

Gracias. =)
  #6 (permalink)  
Antiguo 06/06/2009, 10:20
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Detectar espacios al principio y final de una cadena

ltrim , rtrim

http://www.php.net/ltrim
  #7 (permalink)  
Antiguo 06/06/2009, 10:41
 
Fecha de Ingreso: junio-2009
Ubicación: Mar del Plata
Mensajes: 33
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: Detectar espacios al principio y final de una cadena

Si, puedes permitir espacios en blanco en medio de la cadena.

Para eso hay que modificar el patrón.

Código PHP:
if (eregi('^[[:space:]]'$cadena) || eregi('[[:space:]]$'$cadena))
{
     
//Hay espacios en blanco al final o al principio.

Ese código se fija si la cadena empieza o termina con espacios en blanco.

Fijate si funciona.
  #8 (permalink)  
Antiguo 06/06/2009, 10:50
Avatar de berper  
Fecha de Ingreso: abril-2009
Ubicación: Mexico
Mensajes: 74
Antigüedad: 15 años
Puntos: 2
Respuesta: Detectar espacios al principio y final de una cadena

Haré pruebas con los codigos.

Muchas gracias =)
  #9 (permalink)  
Antiguo 06/06/2009, 12:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Detectar espacios al principio y final de una cadena

Cita:
Iniciado por RodrigoQ Ver Mensaje
Si, puedes permitir espacios en blanco en medio de la cadena.

Para eso hay que modificar el patrón.

Código PHP:
if (eregi('^[[:space:]]'$cadena) || eregi('[[:space:]]$'$cadena))
{
     
//Hay espacios en blanco al final o al principio.

Ese código se fija si la cadena empieza o termina con espacios en blanco.

Fijate si funciona.
RodrigoQ, las expresiones con ereg, ya estan deprecated, es mejor usa la librería preg para mayor portabilidad.

Adicionalmente pateketrueke ya dejo la expresión ideal para detectar en una sola función.

Saludos.
  #10 (permalink)  
Antiguo 08/06/2009, 22:52
Avatar de berper  
Fecha de Ingreso: abril-2009
Ubicación: Mexico
Mensajes: 74
Antigüedad: 15 años
Puntos: 2
Respuesta: Detectar espacios al principio y final de una cadena

El codigo de pateketrueke me funciono perfectamente. Gracias ^^

Ahora tengo otra pregunta:

¿es posible contar el numero de espacios o las vaces que se escribe una letra en especifico dentro de una variable?

Saludos.
  #11 (permalink)  
Antiguo 08/06/2009, 22:57
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Detectar espacios al principio y final de una cadena

Puedes usar substr_count()

http://www.php.net/manual/en/function.substr-count.php
  #12 (permalink)  
Antiguo 08/06/2009, 23:31
Avatar de berper  
Fecha de Ingreso: abril-2009
Ubicación: Mexico
Mensajes: 74
Antigüedad: 15 años
Puntos: 2
Respuesta: Detectar espacios al principio y final de una cadena

Muchas gracias Ronruby.
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 04:45.