假设我在www.example.com/?par1=test
并且我有一个链接,例如:<a href="/subpage">Link text</a>
。
如何将 GET 变量传递给子页面,而无需读取每个参数 eG$_GET["par1"]
并手动将其传递给链接。
如果您想将所有get 变量传递到下一页,请执行以下操作:
$href = '/somepage/';
if ($_GET) {
$href .= strpos($href, '?') === false ? '?' : '&';
$href .= http_build_query($_GET);
}
然后回显这个href
<a href="<?=$href;?>">my link</a>
$_SERVER['QUERY_STRING'] 包含您要查找的数据。
使用parse_url。它返回一个数组,如:
$out = parse_url('www.example.com/?par1=test');
var_dump($out);
输出:
Array
(
[path] => www.example.com/
[query] => par1=test
)
这是如何执行此操作的示例:
<?php
echo print_r($_GET);
echo "<br>";
echo "www.mysite.com/index.php?".http_build_query($_GET);
?>
将打印:(如果网址是:http ://www.mysite.com/index.php?this=1&that=2 )
数组 ( [this] => 1 [that] => 2 ) 1
www.mysite.com/index.php?this=1&that=2
<a href='www.example.com.br?pas1=<?php echo $variavel ?>'>Link</a>;
您可以创建一个函数来帮助您生成链接。
显然这是一个简单的示例,但您可以轻松扩展它。
function getLink($url, array $params = array())
{
if (empty($params)) return $url;
$url .= '?';
foreach($params as $param => $value) {
$url .= $param .'='. $value;
}
return $url;
}
$params = array(
'test' => 1,
'foo' => 'hello',
'bar' => 'test',
);
echo getLink('my/target/page.php', $params);
该$params
数组可以代替超全局数组$_GET
以使生活更轻松!
与许多问题一样,有许多解决方案!
最简单的可能只是在你的 URL 后面加上 的内容$_SERVER['QUERY_STRING']
,例如:
<a href="/somefile?<?php echo $_SERVER['QUERY_STRING'] ?>">somefile</a>
但这确实依赖于您的网络服务器正确传递我相信的正确参数。Apache 应该使用 mod_php 开箱即用地做到这一点,但基于 FastCGI 的 PHP 可能需要一些额外的配置。