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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  expresion regular selección entre varias palabras
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: expresion regular selección entre varias palabras  (Leído 5,870 veces)
kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
expresion regular selección entre varias palabras
« en: 20 Septiembre 2010, 23:40 pm »

Buenas:

   ¿Cómo puedo hacer una expresión regular para que me indique si $palabra pertenece al grupo de palabras admitidas? Es que esta expresión permite palabras como "netttt", "comfjhg", "orgreja" y estas no deberían ser aceptadas.

Código
  1.   function es_palabra_valida($palabra) {
  2.                    if (ereg("(com|net|org)", $palabra)) {
  3.                        echo "La palabra $palabra es correcta<br>";
  4.                        return true;
  5.                    } else {
  6.                        echo "La palabra $palabra no es válida<br>";
  7.                        return false;
  8.                    }
  9.                }
  10.  


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: expresion regular selección entre varias palabras
« Respuesta #1 en: 20 Septiembre 2010, 23:47 pm »

especifica un poco mas, y no use ereg ya es una función obsoleta ahora se usa preg_match...

Quieres que com, net y org este al final de la palabra... Trata de especificar lo que quieres hacer...


En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: expresion regular selección entre varias palabras
« Respuesta #2 en: 20 Septiembre 2010, 23:55 pm »

ok.

No al final sino que me devuelva true o false si está en este grupo {com, net, org}.
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: expresion regular selección entre varias palabras
« Respuesta #3 en: 21 Septiembre 2010, 00:02 am »

que grupo¿¿??

si la palabra a pasar es: hcomla te la acepta
Ej:
Código
  1. <?php
  2.  
  3. $palabra = 'hcomasa';
  4. if(preg_match('/[com|net|org]/i',$palabra))
  5. {
  6. echo 'si';
  7. }
  8. ?>
Salida:
Código:
si

Dame un ejemplo de lo que quieres hacer...
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.723


<3


Ver Perfil WWW
Re: expresion regular selección entre varias palabras
« Respuesta #4 en: 21 Septiembre 2010, 00:02 am »

Igual debería ser al final de la cadena. Por ejemplo,
Correctas,
Código:
www.google.org
www.google.com
www.google.net

No correctas,
Código:
www.google.org.edu
www.google.com.co
www.google.net.gov

Código
  1. (com|net|org)$
En línea

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: expresion regular selección entre varias palabras
« Respuesta #5 en: 21 Septiembre 2010, 00:15 am »

Haber si me explico mejor...  :silbar:

Correctas:

net
com
org

No correctas:

comunidad
orgullo
www.google.com
www.google.net

No se si una expresión regular sería la forma mas correcta, quizás con guardar en un array {net, com, org} y comparar $palabra con cada una para saber si es una de ellas. Quiero utilizar la expresión regular mas que nada por comodidad y por si es mas eficiente.

En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: expresion regular selección entre varias palabras
« Respuesta #6 en: 21 Septiembre 2010, 00:24 am »

Código
  1. <?php
  2.  
  3. $host = array('google.com','www.google.org','www.google.org.edu','www.google.com','www.google.org.gov');
  4.  
  5.  
  6. foreach($host as $result)
  7. {
  8.   if(preg_match('/\.?[com|net|org]$/i',$result, $captura))
  9.   {
  10.      echo "Valida-> $result<br />";
  11.   }else{
  12.      echo "No valida-> $result<br />";
  13.         }      
  14. }
  15.  
  16. ?>

Salida:
Código:
Valida-> google.com
Valida-> www.google.org
No valida-> www.google.org.edu
Valida-> www.google.com
No valida-> www.google.org.gov
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: expresion regular selección entre varias palabras
« Respuesta #7 en: 21 Septiembre 2010, 00:36 am »

a ver que estamos rizando el rizo...

Correctas:

"nada por delante"com"nada por detrás"
"nada por delante"net"nada por detrás"
"nada por delante"org"nada por detrás"

No correctas:

www.google.org.gov
www.google.com
www.google.org.edu
www.google.org
comunidad
orgullo
www.google.com
www.google.net

Únicamente son correctas las palabras com, net, org.
Las palabras no correctas son todas las demás ya lleven "com" "net" "org" incluida en alguna parte ya sea delante, en medio, al final, o no lo lleven.

Correctas:

if(palabra == "com" || palabra == "net" || palabra =="org"){
   //es correcta
}else{
   //no es correcta
}
« Última modificación: 21 Septiembre 2010, 00:38 am por kinos » En línea

kinos

Desconectado Desconectado

Mensajes: 104



Ver Perfil
Re: expresion regular selección entre varias palabras
« Respuesta #8 en: 21 Septiembre 2010, 01:14 am »

Lo tengo ~ Yoya ~ :

Código
  1. <?php
  2. $host = array('com','net','org','google.com','www.google.org','www.google.org.edu','www.google.com','www.google.org.gov');
  3.  
  4.  
  5.                foreach($host as $result) {
  6.                    if(ereg('^(com|net|org)$',$result, $captura)) {
  7.                        echo "Valida-> $result<br />";
  8.                    }else {
  9.                        echo "No valida-> $result<br />";
  10.                    }
  11.                }
  12. ?>

Salida:

Valida-> com
Valida-> net
Valida-> org
No valida-> google.com
No valida-> www.google.org
No valida-> www.google.org.edu
No valida-> www.google.com
No valida-> www.google.org.gov

Lo único que con preg_match no me lo hace bien, no se porque...

Gracias.
« Última modificación: 21 Septiembre 2010, 01:38 am por kinos » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: expresion regular selección entre varias palabras
« Respuesta #9 en: 21 Septiembre 2010, 02:32 am »

Que raro xD

Código
  1. <?php
  2. $host = array('com','net','org','google.com.net','www.google.org','www.google.org.edu','www.google.com','www.google.org.gov');
  3.  
  4.  
  5.               foreach($host as $result) {
  6.                   if(preg_match('/^(net|com|org)$/i',$result)) {
  7.                       echo "Valida-> $result<br />";
  8.                   }else {
  9.                       echo "No valida-> $result<br />";
  10.                   }
  11.               }
  12. ?>
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

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