在包含其他URL的URL中解析GET请求参数

ked*_*ter 16 php get urlencode request

这是网址:

http://localhost/test.php?id=http://google.com/?var=234&key=234
Run Code Online (Sandbox Code Playgroud)

我无法获得完整的$ _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 
?>
Run Code Online (Sandbox Code Playgroud)

Wh1*_*Ck5 35

$get_url = "http://google.com/?var=234&key=234";
$my_url = "http://localhost/test.php?id=" . urlencode($get_url);
Run Code Online (Sandbox Code Playgroud)

$ my_url输出:

http://localhost/test.php?id=http%3A%2F%2Fgoogle.com%2F%3Fvar%3D234%26key%3D234
Run Code Online (Sandbox Code Playgroud)

所以现在你可以使用$_GET['id']$_REQUEST['id'](解码)获得这个值.

echo urldecode($_GET["id"]);
Run Code Online (Sandbox Code Playgroud)

产量

http://google.com/?var=234&key=234
Run Code Online (Sandbox Code Playgroud)

获取每个GET参数:

foreach ($_GET as $key=>$value) {
  echo "$key = " . urldecode($value) . "<br />\n";
  }
Run Code Online (Sandbox Code Playgroud)

$key是GET键,$value是GET值$key.

或者您可以使用替代解决方案来获取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]) : "";
    }
  }
Run Code Online (Sandbox Code Playgroud)

$get_parameters与url解码相同$_GET.


Sha*_*ngh 9

创建url时使用urlencode对其进行编码

$val=urlencode('http://google.com/?var=234&key=234')

<a href="http://localhost/test.php?id=<?php echo $val ?>">Click here</a>
Run Code Online (Sandbox Code Playgroud)

并且在使用urldecode获取解码时