Voici l'URL:
http://localhost/test.php?id=http://google.com/?var=234&key=234
Et je ne peux pas obtenir les informations complètes $ _GET ['id'] ou $ _REQUEST ['d'].
<?php
print_r($_REQUEST['id']);
//And this is the output http://google.com/?var=234
//the **&key=234** ain't show
?>
$get_url = "http://google.com/?var=234&key=234";
$my_url = "http://localhost/test.php?id=" . urlencode($get_url);
sorties $ my_url:
http://localhost/test.php?id=http%3A%2F%2Fgoogle.com%2F%3Fvar%3D234%26key%3D234
Alors maintenant, vous pouvez obtenir cette valeur en utilisant $_GET['id']
ou $_REQUEST['id']
(décodé).
echo urldecode($_GET["id"]);
Sortie
http://google.com/?var=234&key=234
Pour obtenir tous les paramètres GET:
foreach ($_GET as $key=>$value) {
echo "$key = " . urldecode($value) . "<br />\n";
}
$key
est la clé GET et $value
est la valeur GET pour $key
.
Ou vous pouvez utiliser une solution alternative pour obtenir un tableau de paramètres GET
$get_parameters = array();
if (isset($_SERVER['QUERY_STRING'])) {
$pairs = explode('&', $_SERVER['QUERY_STRING']);
foreach($pairs as $pair) {
$part = explode('=', $pair);
$get_parameters[$part[0]] = sizeof($part)>1 ? urldecode($part[1]) : "";
}
}
$get_parameters
est identique à l'url décodé $_GET
.
J'ai eu un problème similaire et fini par utiliser parse_url
et parse_str
, qui tant que l'URL dans le paramètre est correctement encodé dans l'URL (ce qui devrait absolument) vous permet d'accéder à tous les paramètres de l'URL actuelle, ainsi de l'URL codée dans le paramètre de requête, comme suit:
$get_url = "http://google.com/?var=234&key=234";
$my_url = "http://localhost/test.php?id=" . urlencode($get_url);
function so_5645412_url_params($url) {
$url_comps = parse_url($url);
$query = $url_comps['query'];
$args = array();
parse_str($query, $args);
return $args;
}
$my_url_args = so_5645412_url_params($my_url); // Array ( [id] => http://google.com/?var=234&key=234 )
$get_url_args = so_5645412_url_params($my_url_args['id']); // Array ( [var] => 234, [key] => 234 )
Vous devrez peut-être utiliser urlencode sur la chaîne "http://google.com/?var=234&key=234".
vous utilisez mauvais caractère comme? et et et etc ...
le modifier en nouveau code
voir ces liens
aussi vous pouvez utiliser urlencode
$val=urlencode('http://google.com/?var=234&key=234')
La méthode php correcte consiste à utiliser parse_url ()
http://php.net/manual/en/function.parse-url.php
(du manuel php)
Cette fonction analyse une URL et retourne un tableau associatif contenant l’un des composants de l’URL présents.
Cette fonction n'est pas destinée à valider l'URL donnée, elle la divise uniquement en éléments énumérés ci-dessus. Les URL partielles sont également acceptées, parse_url () fait de son mieux pour les analyser correctement.