2010-08-18 3 views
2

J'essaie d'attraper chaque paramètre d'URL et de les afficher du premier au dernier, mais je veux être capable d'afficher l'un des paramètres n'importe où sur la page. Comment puis-je faire ceci? Que dois-je ajouter ou modifier sur mon script?Comment saisir les paramètres d'URL en utilisant PHP?

Voici un exemple de valeur d'URL.

http://www.localhost.com/topics/index.php?cat=3&sub1=sub-1&sub2=sub-2&sub3=sub-3&sub4=sub-4 

Voici mon script PHP.

$url = $_SERVER['QUERY_STRING']; 
$query = array(); 

if(!empty($url)){ 
    foreach(explode('&', $url) as $part){ 
    list($key, $value) = explode('=', $part, 2); 
    $query[$key] = $value; 
    } 
} 

Répondre

15

Vous n'avez pas besoin de le faire manuellement, PHP fournit déjà cette fonctionnalité dans la variable globale $ _GET:

<?php 
    foreach($_GET as $key => $value) 
     echo $key . " : " . $value; 
?> 
+3

Et Ye Gods, ne pas oublier de filtrer les ... s'ils sont affichés à l'utilisateur immédiatement ou sont stockés dans une base de données ou diffusées dans l'espace profond, les utilisateurs infâmes (ou incompétents) peut causer toutes sortes de problèmes. S'il vous plaît assurez-vous de leur échapper correctement. – CaseySoftware

0

Vous cherchez le $_GET superglobale

foreach ($_GET as $key => $value) { 
    echo $key . ' -- ' . $value; 
} 

Vous pouvez accéder à toutes les valeurs $_GET en utilisant ce code $_GET['sub1'] qui renverra sub-1

1

S'il s'agit d'une requête GET, tous les paramètres seront dans $ _GET. Un formulaire POST sera dans $ _POST. Les deux sont contenus dans $ _REQUEST.

0

Il existe une façon beaucoup plus simple de faire cela plutôt que d'utiliser une boucle. Utilisez la fonction intégrée parse_str(). Il divisera la requête uri en paires clé => valeur. Exemple:

$url = "cat=3&sub1=sub-1&sub2=sub-2&sub3=sub-3&sub4=sub-4"; 
$query = array(); 
parse_str($url, $query); 
print_r($query); 
Questions connexes