Foros del Web » Programando para Internet » PHP »

Como compruebo si "tal" caracter está en una cadena???

Estas en el tema de Como compruebo si "tal" caracter está en una cadena??? en el foro de PHP en Foros del Web. Mi problema es: Ingreso un texto en un campo de texto. Ahora bien. En la página donde voy a validar, voy a comprobar que ese ...
  #1 (permalink)  
Antiguo 17/04/2007, 15:02
 
Fecha de Ingreso: marzo-2007
Mensajes: 129
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta Como compruebo si "tal" caracter está en una cadena???

Mi problema es:

Ingreso un texto en un campo de texto.

Ahora bien.

En la página donde voy a validar, voy a comprobar que ese texto no contenga espacios, o el caracter ?, por poner un ejemplo.

O si fuese posible, que se compruebe que sólamente se usan los caracteres a-z A-Z 0-9 y _.

Alguien sabe de algún método?

Se lo agradecería mucho ^^

Un saludo!
  #2 (permalink)  
Antiguo 17/04/2007, 15:07
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Re: Como compruebo si "tal" caracter está en una cadena???

A ver si comprendí:
Código PHP:
echo substr_count($var,"a")==0'No esta a en $var' 'esta a en $var'
Edit; No leí lo de a-z A-Z 0-9 y _. supongo que puede ser para el nombre de un archivo, podrías hacer:

Código PHP:
function fileSystemName($nombre){
    
$search = array(
        
chr(192),chr(193),chr(194),chr(195),chr(224),chr(225),chr(226),chr(227), // a
        
chr(201),chr(202),chr(233),chr(234), // e
        
chr(205),chr(237), // i
        
chr(211),chr(212),chr(213),chr(243),chr(244),chr(245), // o
        
chr(218),chr(220),chr(250),chr(252), // u
        
chr(199),chr(231), // c
        
chr(209),chr(241// ñ
    
); 
    
$replace = array(
        
'a','a','a','a','a','a','a','a',
        
'e','e','e','e',
        
'i','i',
        
'o','o','o','o','o','o',
        
'u','u','u','u',
        
'c','c',
        
'n','n'
    
);
    
$aux strtolower(str_replace($search$replace$nombre));    
    
$aux preg_replace('/[^a-z0-9]/','_',$aux);
    return 
$aux;
}
echo 
fileSystemName("Cómo que no está bien?, una ñ?"); 
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 18/04/2007, 00:37
 
Fecha de Ingreso: agosto-2004
Mensajes: 118
Antigüedad: 20 años, 3 meses
Puntos: 1
Re: Como compruebo si "tal" caracter está en una cadena???

Algo más sencillo es utilizar expresiones regulares, como la función ereg()

http://es2.php.net/manual/es/function.ereg.php

Yo utilizo algo como esto para validar una dirección email, básicamente, desmenuza el formato de la dirección en tres trozos del tipo "algo" @ "algo" . "lo que sea"; asegurandome que en los tres trozos se cumple la expresión regular que he propuesto.

En este ejemplo, antes de la "@" se permiten letras, números y un punto, despues de la "@" lo mismo, pero despues del "." sólo se permiten letras, ademas está limitado a tres caracteres.
Código PHP:
if (!ereg("([a-zA-Z0-9\._].+)@([a-zA-Z0-9\.-].+)\\.(.[a-zA-Z]{1,4})",$NewEmail))
{
//Hacer algo para bloquear la continuación del script


  #4 (permalink)  
Antiguo 18/04/2007, 02:54
 
Fecha de Ingreso: marzo-2007
Mensajes: 129
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Como compruebo si "tal" caracter está en una cadena???

En realidad lo que trato es que un usuario no se registre con un nombre inválido. Es decir, que no use espacios ni símbolos.

El método de nicolaspar parece efectivo, pero no termino de comprenderlo.

Un saludo!

PD: Lo único que quiero, es que cuando se detecte la presencia de un caracter que no sea a-z, A-Z, 0-9 y _, me devuelva para atrás y escriba otro nombre de usuario.

Gracias.
  #5 (permalink)  
Antiguo 18/04/2007, 04:39
 
Fecha de Ingreso: marzo-2007
Mensajes: 129
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Como compruebo si "tal" caracter está en una cadena???

Me he creado una función alternativa, mientras encuentro una mejor solución:

Código PHP:
$texto strtr($texto"ª!·$%&/()=?¿^*¨;:>Ç\|@#~€¬[]{}€º'¡`+´,.-<ç ""___________________________________________"); 
¿Creen que es buena idea?
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 22:22.