URLは次のとおりです。
http://localhost/test.php?id=http://google.com/?var=234&key=234
そして、完全な$ _GET ['id']または$ _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);
$ my_urlの出力:
http://localhost/test.php?id=http%3A%2F%2Fgoogle.com%2F%3Fvar%3D234%26key%3D234
そのため、$_GET['id']
または$_REQUEST['id']
(デコード済み)を使用してこの値を取得できます。
echo urldecode($_GET["id"]);
出力
http://google.com/?var=234&key=234
すべてのGETパラメーターを取得するには:
foreach ($_GET as $key=>$value) {
echo "$key = " . urldecode($value) . "<br />\n";
}
$key
はGETキーで、$value
は$key
のGET値です。
または、別のソリューションを使用して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
は、URLデコードされた$_GET
と同じです。
同様の問題があり、parse_url
およびparse_str
は、パラメータ内のURLが正しくURLエンコードされている限り(これが確実に必要です)、実際のURLのすべてのパラメータと、クエリパラメータ内のエンコードされたURLのパラメータの両方にアクセスできます。そう:
$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 )
文字列「http://google.com/?var=234&key=234」で rlencode を使用する必要がある場合があります
あなたは次のような悪いキャラクターを使用していますか? and&and etc ...
新しいコードに編集します
このリンクをご覧ください
また、urlencodeを使用することができます
$val=urlencode('http://google.com/?var=234&key=234')
正しいphpの方法は、parse_url()を使用することです
http://php.net/manual/en/function.parse-url.php
(PHPマニュアルから)
この関数は、URLを解析し、存在するURLのさまざまなコンポーネントのいずれかを含む連想配列を返します。
この関数は、指定されたURLを検証するためのものではなく、上記のURLに分割するだけです。部分的なURLも受け入れられ、parse_url()はそれらを正しく解析するために最善を尽くします。