348 votes

Obtenir la chaîne de requête URL

Quel est le moyen de « moins de code nécessaire » pour obtenir les paramètres d’une chaîne de requête URL qui est formatée comme suit ?

www.mysite.com/category/subcategory?myqueryhash

Sortie doit être :``

Je suis conscient de cette approche :

556voto

Filip Roséen - refp Points 24995

``contient les données que vous recherchez.


DOCUMENTATION

113voto

medina Points 3052

Le moyen PHP pour le faire est d’utiliser la fonction parse_url, qui analyse une URL et retourne ses composants. Y compris la chaîne de requête.

Documentation ici

98voto

sbrbot Points 939

La fonction parse_str transforme automatiquement tous les paramètres de requête dans les variables PHP correspondantes. Par exemple à partir de l’URL suivante :

Copiez le code suivant :

permet de créer automatiquement les variables $x et $y avec des valeurs de 100 et 200, que vous pouvez ensuite utiliser dans votre code.

45voto

Si vous voulez que la chaîne de requête entière :

4voto

Adriana Points 46

Voici ma fonction pour reconstruire les parties du PARRAIN de la chaîne de requête.

Si la page appelant avait déjà une chaîne de requête dans sa propre URL, et vous devez revenir à cette page et que vous voulez envoyer certains, pas tous, de cette $_GET vars (par exemple, un numéro de page).

Exemple: Référent de la chaîne de requête a été ?foo=1&bar=2&baz=3 appelant refererQueryString( 'foo' , 'baz' ) retours foo=1&baz=3":

function refererQueryString(/* var args */) {

    //Return empty string if no referer or no $_GET vars in referer available:
    if (!isset($_SERVER['HTTP_REFERER']) ||
        empty( $_SERVER['HTTP_REFERER']) ||
        empty(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY ))) {

        return '';
    }

    //Get URL query of referer (something like "threadID=7&page=8")
    $refererQueryString = parse_url(urldecode($_SERVER['HTTP_REFERER']), PHP_URL_QUERY);

    //Which values do you want to extract? (You passed their names as variables.)
    $args = func_get_args();

    //Get '[key=name]' strings out of referer's URL:
    $pairs = explode('&',$refererQueryString);

    //String you will return later:
    $return = '';

    //Analyze retrieved strings and look for the ones of interest:
    foreach ($pairs as $pair) {
        $keyVal = explode('=',$pair);
        $key = &$keyVal[0];
        $val = urlencode($keyVal[1]);
        //If you passed the name as arg, attach current pair to return string:
        if(in_array($key,$args)) {
            $return .= '&'. $key . '=' .$val;
        }
    }

    //Here are your returned 'key=value' pairs glued together with "&":
    return ltrim($return,'&');
}

//If your referer was 'page.php?foo=1&bar=2&baz=3'
//and you want to header() back to 'page.php?foo=1&baz=3'
//(no 'bar', only foo and baz), then apply:

header('Location: page.php?'.refererQueryString('foo','baz'));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X