Foros del Web » Programando para Internet » PHP »

detectar caracteres especiales

Estas en el tema de detectar caracteres especiales en el foro de PHP en Foros del Web. Hola a todos espero me puedan ayudar tengo un input type=text, el cual introducen una cadena necesito identificar si estan introduciendo caracteres especiales (acentos y ...
  #1 (permalink)  
Antiguo 30/08/2011, 14:54
Avatar de saseisa  
Fecha de Ingreso: agosto-2006
Mensajes: 329
Antigüedad: 17 años, 7 meses
Puntos: 9
detectar caracteres especiales

Hola a todos espero me puedan ayudar
tengo un input type=text, el cual introducen una cadena necesito identificar si estan introduciendo caracteres especiales (acentos y ñ) y si encuentra no me permita almacenarlos en la bd

desde ya gracias
  #2 (permalink)  
Antiguo 30/08/2011, 14:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: detectar caracteres especiales

Puedes usar expresiones regulares para eso.

Saludos.
  #3 (permalink)  
Antiguo 30/08/2011, 15:47
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Respuesta: detectar caracteres especiales

Ya te lo ha dicho Gatorv, para eso necesitas usar expresiones regulares.

Un sencillo ejemplo para tu caso:

Código PHP:
Ver original
  1. $texto = "España y su olé";
  2.  
  3. if (preg_match("/(á|é|í|ó|ú|ñ+)/", $texto)) {
  4.     echo "Vaya parece ser que has introducido caracteres no válidos";
  5. } else {
  6.     echo "Todo correcto...";
  7. }

Cómo ves habría que mejorarlo pero eso ya lodejo en tus manos

Saludos,
  #4 (permalink)  
Antiguo 30/08/2011, 16:29
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: detectar caracteres especiales

@OsSk4R es mucho más fácil detectar los válidos que todos los inválidos.

Saludos
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 31/08/2011, 07:12
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: detectar caracteres especiales

Cita:
Iniciado por andresdzphp Ver Mensaje
@OsSk4R es mucho más fácil detectar los válidos que todos los inválidos.

Saludos
Concuerdo con andresdzphp, ademas la regular de arriba tiene un detalle, el mas debería estar fuera del paréntesis, en tu ejemplo solo se esta aplicando a la ñ.

Saludos
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #6 (permalink)  
Antiguo 01/09/2011, 11:07
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Respuesta: detectar caracteres especiales

Cita:
Iniciado por andresdzphp Ver Mensaje
@OsSk4R es mucho más fácil detectar los válidos que todos los inválidos.

Saludos
La verdad, las expresiones regulares nunca fueron mi fuerte ¡No me des una complicada expresión porque puedo tardar años en leerla!
Por suerte siempre que las he tenido que usar las he usado en un nivel "básico".


Ahora bien, no comprendo como puede resultar más fácil detectar los válidos que los inválidos en este ejemplo. Si alguien me lo aclara

Según siempre he entendido...
"Una expresión regular consiste en comparar un patrón frente a un texto, para comprobar si el texto contiene lo especificado en el patrón."

Cita:
Concuerdo con andresdzphp, ademas la regular de arriba tiene un detalle, el mas debería estar fuera del paréntesis, en tu ejemplo solo se esta aplicando a la ñ.

Saludos
Sí, en realidad puede parecer o parece que sólo se aplica a la ñ ¿pero por qué si cambias la frase "España y su olé" y pones por ejemplo é o éé... la expresión continua funcionando correctamente?
Por lo que veo, no sólo se aplica a la ñ.

Saludos,
  #7 (permalink)  
Antiguo 01/09/2011, 11:18
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: detectar caracteres especiales

Cúantos caracteres especiales pueden haber? y cuántos caracteres válidos pueden haber? Obviamente hay menos válidos y es más fácil controlar estos que todos los especiales no crees?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 01/09/2011, 11:30
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Respuesta: detectar caracteres especiales

Cita:
Iniciado por andresdzphp Ver Mensaje
Cúantos caracteres especiales pueden haber? y cuántos caracteres válidos pueden haber? Obviamente hay menos válidos y es más fácil controlar estos que todos los especiales no crees?
En este ejemplo creo que no. Hay menos caracteres especiales que validos.
Concretamente hay sólo 6 caracteres especiales, por tanto a mi entender hay menos caracteres especiales, sólo áéíóú y ñ por eso se me hace más fácil controlar estos caracteres especiales que los válidos ¿No?

  #9 (permalink)  
Antiguo 01/09/2011, 11:33
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 8 meses
Puntos: 194
Respuesta: detectar caracteres especiales

Cita:
Iniciado por OsSk4R Ver Mensaje
La verdad, las expresiones regulares nunca fueron mi fuerte ¡No me des una complicada expresión porque puedo tardar años en leerla!
Por suerte siempre que las he tenido que usar las he usado en un nivel "básico".


Ahora bien, no comprendo como puede resultar más fácil detectar los válidos que los inválidos en este ejemplo. Si alguien me lo aclara

Según siempre he entendido...
"Una expresión regular consiste en comparar un patrón frente a un texto, para comprobar si el texto contiene lo especificado en el patrón."



Sí, en realidad puede parecer o parece que sólo se aplica a la ñ ¿pero por qué si cambias la frase "España y su olé" y pones por ejemplo é o éé... la expresión continua funcionando correctamente?
Por lo que veo, no sólo se aplica a la ñ.

Saludos,
No parece ni puede parecer, el + se lo estas aplicando solo a la ñ.

Funciona porque si encuentra un carácter invalido ya machea la regular expresión. El + esta sobrando.

Código PHP:
"/(á|é|í|ó|ú|ñ+)/"             //funciona (se le aplica solo a la ñ)
"/(á+|é+|í+|ó+|ú+|ñ+)/"  //funciona
"/(á|é|í|ó|ú|ñ)+/"             //funciona
"/(á|é|í|ó|ú|ñ)/"               //funciona 
Esto también funciona, sin embargo el == true, no esta del todo bien no te parece?
Código PHP:
$boleano true;
if(
$boleano == true){
    
// doing

__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #10 (permalink)  
Antiguo 01/09/2011, 11:33
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: detectar caracteres especiales

Cita:
necesito identificar si estan introduciendo caracteres especiales (acentos y ñ) y si encuentra no me permita almacenarlos en la bd
Listado de caracteres especiales

No sólo ñ y tíldes, claramente dice.

Código PHP:
Ver original
  1. $texto = "())()())( %·%$%&%$%$ Texto con caracteres especiales %&()%$";
  2. if (preg_match("/(á|é|í|ó|ú|ñ+)/", $texto)) {
  3.     echo "Vaya parece ser que has introducido caracteres no válidos";
  4. } else {
  5.     echo "Todo correcto...";
  6. }

Todo correcto... ??? No debe ser así. Si quieres un texto sin estos prefiero ponerle letras de la A a la Z sin Ñ
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 01/09/2011 a las 11:42
  #11 (permalink)  
Antiguo 01/09/2011, 11:54
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Respuesta: detectar caracteres especiales

Cita:
Iniciado por andresdzphp Ver Mensaje
Listado de caracteres especiales

No sólo ñ y tíldes, claramente dice.

Código PHP:
Ver original
  1. $texto = "())()())( %·%$%&%$%$ Texto con caracteres especiales %&()%$";
  2. if (preg_match("/(á|é|í|ó|ú|ñ+)/", $texto)) {
  3.     echo "Vaya parece ser que has introducido caracteres no válidos";
  4. } else {
  5.     echo "Todo correcto...";
  6. }

Todo correcto... ??? No debe ser así. Si quieres un texto sin estos prefiero ponerle letras de la A a la Z sin Ñ
Claro, claro, ahora sí. Fallo mío. Ahora si que le encuentro sentido a lo que decias andresdzphp, y no sé como he podido ser tan tonto de negartelo.
Fue un descuido por mi parte pues sólo me "cegué" en lo de acentos y ñ, jeje.

Cita:
Funciona porque si encuentra un carácter invalido ya machea la regular expresión. El + esta sobrando.
¡Cierto!, también me has sacado de dudas

Saludos,

Etiquetas: caracteres, especiales
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:21.