2010-06-28 30 views
13

Oye, digamos que tengo una URL que acaba de pasar a través de mi php. ¿Hay alguna manera fácil de obtener algunas variables de GET que se pasan a través de ella? No es la url real de la página ni nada.Obtiene las variables GET de una cadena de URL

como un simplemente una cadena que contiene

http://www.somesite.com/index.php?url=var&file_id=var&test=var

Cuál es la mejor manera de obtener los valores de esas variables?

+0

posible duplicado de [Obteniendo una ID de una cadena. Problema de Regex.] (Http://stackoverflow.com/questions/3131288/getting-an-id-out-of-a-string-regex-problem) - ver la respuesta aceptada. – Gordon

Respuesta

39

parse_str(parse_url($url, PHP_URL_QUERY), $array), ver la manpage para parse_str para obtener más información.

+0

Solución agradable y elegante. –

+0

thaks, fácil y exacto !! – dav

+0

¡Me encanta! agradable, simple y directo! gracias cristis .. –

-1

Una rápida de Google para "GET PHP" da esta página de w3schools:

http://www.w3schools.com/php/php_get.asp

+6

No pregunta por recuperar los parámetros de la página actual. Por el contrario, quiere analizar la cadena de consulta de alguna URL arbitraria, es decir, de alguna cadena. –

+0

Exactamente, gracias George –

+0

@Anon publicó lo que necesitaba. Gracias amigo. –

16
$href = 'http://www.somesite.com/index.php?url=var&file_id=var&test=var'; 

$url = parse_url($href); 
print_r($url); 
/* Array 
(
    [scheme] => http 
    [host] => www.somesite.com 
    [path] => /index.php 
    [query] => url=var&file_id=var&test=var 
) */ 

$query = array(); 
parse_str($url['query'], $query); 

print_r($query); 
/* Array 
(
    [url] => var 
    [file_id] => var 
    [test] => var 
) */ 
+0

Parece que no funciona si tienes un CSS en lugar de un archivo PHP. Podría estar haciendo algo mal. –

+0

código PHP nunca funciona en archivos css (a menos que haya registrado archivos css para ser application/x-httpd-php o equivalente en la configuración de su servidor, que probablemente no debería. – Kris

+0

Sí, lo entiendo. Lo que quise decir es que Tengo un archivo CSS referido con 'style.css? V = 12345', v es un número de versión para forzar una actualización del lado del navegador de caché. Lo que quería hacer era eliminar o extraer el parámetro. Lo conseguí trabajando como yo Quiero ahora. –

0

me gustaría usar algo como:

preg_match_all('/(\?|&)([^=]+=[^&]*)/', $string , $matches); 

continuación

print_r($matches[2]); 
/* 
Array 
(
    [0] => url=var 
    [1] => file_id=var 
    [2] => test=var 
) 
*/ 

esperar que funcione 4 u.

4

En realidad es mucho más fácil que escribir cualquier función personalizada.

$ queryStr = $ _SERVER ['QUERY_STRING'];

+0

que toma tanto get como post vars, ¿no? En ese caso, podrías terminar con muchos más argumentos que los get vars de la URL. Si en lugar de eso utilizas REDIRECT_QUERY_STRING, solo obtendrás args de la URL. – Tillebeck

Cuestiones relacionadas