Foros del Web » Programando para Internet » PHP »

Ayuda con expresion regular simple

Estas en el tema de Ayuda con expresion regular simple en el foro de PHP en Foros del Web. Hola. tengo una simplona expresion regular... Asi: <option.*?value=\s*[""']([^\s]+)[""']\s*>(.*?)</option> Busca dentro de los option de una pagina Lo que no me sale es que si dentro ...
  #1 (permalink)  
Antiguo 06/07/2009, 12:29
Avatar de faiverson  
Fecha de Ingreso: mayo-2005
Mensajes: 79
Antigüedad: 19 años
Puntos: 0
Ayuda con expresion regular simple

Hola. tengo una simplona expresion regular...

Asi:

<option.*?value=\s*[""']([^\s]+)[""']\s*>(.*?)</option>


Busca dentro de los option de una pagina
Lo que no me sale es que si dentro de value no hay nada no me lo tome:

Ej: que deje pasar la segunda opcion pero no la primera

<option value="">search by store name</option>
<option value="54-main_level">Ace's Breakaway and Play</option>

Como hago?
__________________
Fabi... fighting versus the web
  #2 (permalink)  
Antiguo 06/07/2009, 13:27
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Ayuda con expresion regular simple

Puedes usar javascript para verificar si selecciono o no la primera opcion

Código PHP:
if(document.NombreForm.NombreSelect.options[document.NombreForm.NombreSelect.selectedIndex].value == ""){
 
//Codigo si selecciono uno vacio

o en php verifica si sale empty()
  #3 (permalink)  
Antiguo 06/07/2009, 13:30
Avatar de faiverson  
Fecha de Ingreso: mayo-2005
Mensajes: 79
Antigüedad: 19 años
Puntos: 0
Respuesta: Ayuda con expresion regular simple

La idea es filtrarlos en la expresion regular. Que no permita values vacios la expresion regular.
Gracias!
__________________
Fabi... fighting versus the web
  #4 (permalink)  
Antiguo 06/07/2009, 13:36
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Ayuda con expresion regular simple

Puedes usar en la expresion regular /^ [^\s]$/
  #5 (permalink)  
Antiguo 06/07/2009, 14:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con expresion regular simple

prueba esto...
Código:
<option.*?value=\s*([\"\'])(.+)\\1\s*>(.*?)</option>
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 06/07/2009, 14:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Ayuda con expresion regular simple

pateketrueke porque le estas colocando \\1
sé que con uno estas escapando el caracter \ pero el 1 ¿porque?
  #7 (permalink)  
Antiguo 06/07/2009, 14:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con expresion regular simple

es para usar las mismas capturas en el desarrollo de la expresión...

osea, capture la comilla ([\"\']) y luego uso la misma mas adelante con \\1 ya que es la primer captura que hice....

es una forma dinámica de construir las expresiones...

aunque de hecho, debería ser solo \1 pero siempre lo he hecho con la doble diagonal y me resulta igual...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 06/07/2009, 14:39
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Ayuda con expresion regular simple

Ahh ok, yo lo habia visto con una sola diagonal por eso me parecio curioso que lo hicieras con dos. Gracias
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 15:20.