Récupération de plusieurs paramètres portant le même nom à partir d'une URL en PHP
Les URL contiennent souvent plusieurs paramètres portant le même nom. Par exemple, un résolveur OpenURL peut rencontrer des URL avec plusieurs paramètres « rft_id ». Cependant, $_GET de PHP ne récupère que la dernière valeur de chaque paramètre.
Pour résoudre ce problème, nous pouvons utiliser l'extrait de code suivant :
$query = explode('&', $_SERVER['QUERY_STRING']); $params = array(); foreach( $query as $param ) { // Prevent notice on explode() for missing '=' if (strpos($param, '=') === false) $param += '='; list($name, $value) = explode('=', $param, 2); $params[urldecode($name)][] = urldecode($value); }
Ce code générera un tableau où chaque clé est un nom de paramètre et la valeur correspondante est un tableau de toutes les valeurs associées à ce paramètre.
Dans l'OpenURL fourni exemple :
// Sample URL $url = 'ctx_ver=Z39.88-2004&rft_id=info:oclcnum/1903126&rft_id=http://www.biodiversitylibrary.org/bibliography/4323&rft_val_fmt=info:ofi/fmt:kev:mtx:book&rft.genre=book&rft.btitle=At last: a Christmas in the West Indies. &rft.place=London,&rft.pub=Macmillan and co.,&rft.aufirst=Charles&rft.aulast=Kingsley&rft.au=Kingsley, Charles,&rft.pages=1-352&rft.tpages=352&rft.date=1871'; $query = explode('&', $url); $params = array(); foreach( $query as $param ) { if (strpos($param, '=') === false) $param += '='; list($name, $value) = explode('=', $param, 2); $params[urldecode($name)][] = urldecode($value); } var_dump($params);
Sortera :
array( 'ctx_ver' => array('Z39.88-2004'), 'rft_id' => array('info:oclcnum/1903126', 'http://www.biodiversitylibrary.org/bibliography/4323'), 'rft_val_fmt' => array('info:ofi/fmt:kev:mtx:book'), 'rft.genre' => array('book'), 'rft.btitle' => array('At last: a Christmas in the West Indies.'), 'rft.place' => array('London'), 'rft.pub' => array('Macmillan and co.'), 'rft.aufirst' => array('Charles'), 'rft.aulast' => array('Kingsley'), 'rft.au' => array('Kingsley, Charles'), 'rft.pages' => array('1-352'), 'rft.tpages' => array('352'), 'rft.date' => array('1871') )
Cette solution fournit un moyen simple de gérer plusieurs paramètres portant le même nom dans les URL PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!