Foros del Web » Programando para Internet » PHP »

Expresion regular y caracter "?" (interrogación)

Estas en el tema de Expresion regular y caracter "?" (interrogación) en el foro de PHP en Foros del Web. Estimados todos: No sé mucho de expresiones regulares, y no pude encontrar respuesta a mi duda con la búsqueda. Concretamente: dado que el caracter ? ...
  #1 (permalink)  
Antiguo 10/06/2005, 10:28
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 14 años, 7 meses
Puntos: 9
Expresion regular y caracter "?" (interrogación)

Estimados todos:

No sé mucho de expresiones regulares, y no pude encontrar respuesta a mi duda con la búsqueda.

Concretamente: dado que el caracter ? (interrogación) tiene un seignificado especial para las expresiones regulares, cómo lo puedo usar literalmente? Es decir, como si hiciera esto '?' o \? pero que funcione, porque ya probé con esas dos opciones y no funcionó...

Aquí está el uso que le estoy dando:
Código:
RewriteRule (.+)_(.+).php?pageNum_activeChilds=(.+)&totalRows_activeChilds=(.+) /index.php?pageNum_activeChilds=$3&totalRows_activeChilds=$4&cod_child=$1&h1=$2
Como se puede observar, después de .php aparece el ?, pero quiero que sea literal, no que la p sea opcional :)

Espero haberme explicado, y gracias de antemano.
  #2 (permalink)  
Antiguo 10/06/2005, 11:02
 
Fecha de Ingreso: mayo-2005
Mensajes: 201
Antigüedad: 12 años, 6 meses
Puntos: 2
Cita:
Iniciado por Escoffie
Estimados todos:

No sé mucho de expresiones regulares, y no pude encontrar respuesta a mi duda con la búsqueda.

Concretamente: dado que el caracter ? (interrogación) tiene un seignificado especial para las expresiones regulares, cómo lo puedo usar literalmente? Es decir, como si hiciera esto '?' o \? pero que funcione, porque ya probé con esas dos opciones y no funcionó...

Aquí está el uso que le estoy dando:
Código:
RewriteRule (.+)_(.+).php?pageNum_activeChilds=(.+)&totalRows_activeChilds=(.+) /index.php?pageNum_activeChilds=$3&totalRows_activeChilds=$4&cod_child=$1&h1=$2
Como se puede observar, después de .php aparece el ?, pero quiero que sea literal, no que la p sea opcional :)

Espero haberme explicado, y gracias de antemano.
Citando la documentacion del modulo RewriteRule de Apache viene lo siguientes:
Cita:
Escaping:
\char
escape that particular char
(for instance to specify the chars ".[]()" etc.)
Ahora ya sabes que puedes corregir en tu expresion

Saludos.!
  #3 (permalink)  
Antiguo 10/06/2005, 13:01
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
Cita:
Iniciado por HerSAn
Citando la documentacion del modulo RewriteRule de Apache viene lo siguientes:

Ahora ya sabes que puedes corregir en tu expresion

Saludos.!
Al parecer, en su mensaje anterior, Escoffie dice que ya lo ha intentado. Por lo que 3 cosas pueden pasar:
1. Escoffie, Lo intentaste incorrectamente :p
2. El error no está en esa parte de la expresión regular
3. No estás cargando el módulo correctamente.

Por que no indicas la URL que estás intentando acceder para "probar" si tu expresión regular es correcta?

saludos
  #4 (permalink)  
Antiguo 10/06/2005, 16:08
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 14 años, 7 meses
Puntos: 9
Gracias a los dos por su respuesta :)

Efectivamente, ya he probado la opción de \? pero no funcionó...
Y parece que sí es ese el problema, pues si cambio el caracter de interrogación por cualquier otro, funciona. Por ejemplo, este: dominio.com/1_Artículos.php.1.8

Lo que yo quisiera es que fuera así: dominio.com/1_Artículos.php?param1=1&param2=8

... donde la dirección original es así dominio.com/index.php?param1=1&param2=Articulos&param3=1&param 4=8

Agradezco sus respuestas

Última edición por Escoffie; 10/06/2005 a las 16:19
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 13:31.