Php 如何实现添加/编辑参数机制?
假设这是我的当前URL:Php 如何实现添加/编辑参数机制?,php,url,url-parameters,Php,Url,Url Parameters,假设这是我的当前URL: http://example.com/search?param1=foo¶m2=bar 现在我想添加param3=baz。这就是代码: <a href="?param3=baz" >add param3</a> //=> http://example.com/search?param3=baz 看起来很难看,但没关系,没关系。现在,如果一个参数已经存在,我需要编辑它,会发生什么?假设这个例子: http://exampl
http://example.com/search?param1=foo¶m2=bar
现在我想添加param3=baz
。这就是代码:
<a href="?param3=baz" >add param3</a>
//=> http://example.com/search?param3=baz
看起来很难看,但没关系,没关系。现在,如果一个参数已经存在,我需要编辑它,会发生什么?假设这个例子:
http://example.com/search?param1=foo¶m2=bar
现在,我如何创建一个链接来编辑
参数2的值?(加上保留其他参数)在向现有查询字符串添加其他参数时,无法编写保留现有查询字符串的相对URI
你必须再做一次:
search?param1=foo¶m=bar¶m3=baz
或
使用Javascript是可能的
或
function currentUrl() {
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https';
$host = $_SERVER['HTTP_HOST'];
$script = $_SERVER['SCRIPT_NAME'];
$params = $_SERVER['QUERY_STRING'];
return $protocol . '://' . $host . $script . '?' . $params;
}
然后用这样的东西增加你的价值
echo currentUrl().'¶m3=baz';
或
function currentUrl() {
$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === FALSE ? 'http' : 'https';
$host = $_SERVER['HTTP_HOST'];
$script = $_SERVER['SCRIPT_NAME'];
$params = $_SERVER['QUERY_STRING'];
return $protocol . '://' . $host . $script . '?' . $params;
}
如果param3
是一个
参数,否则将包括在内
最后
您可以使用函数http\u build\u query
生成新的查询,如下所示:
<?php
$query_str = parse_url($url, PHP_URL_QUERY);
parse_str($query_str, $query_params);
$query_params = $query_params == '' ? '?' : $query_params . '&';
?>
<a href="?{$query_params}param3=baz" >add param3</a>
$url = 'http://example.com/search?param1=foo¶m2=bar';
$query_str = parse_url($url, PHP_URL_QUERY);
parse_str($query_str, $params);
$data = [
'param3' => 'baz'
];
$params = array_merge($params, $data);
echo http_build_query($params) . "\n";
输出将是:
param1=foo¶m2=bar¶m3=baz
param1=foo¶m3=baz
我使用array\u merge
覆盖存在参数,如果我们得到url:
$url = 'http://example.com/search?param1=foo¶m3=bar';
相同的代码输出将为:
param1=foo¶m2=bar¶m3=baz
param1=foo¶m3=baz
我们覆盖exist参数并保存旧参数。您怎么知道这次我要编辑现有参数,这次我要添加新参数?这意味着几乎不可能找到mood@stack ..... http\u build\u query()使用。。。参考: