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 :
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 :
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.
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 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.