Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何实现添加/编辑参数机制?_Php_Url_Url Parameters - Fatal编程技术网

Php 如何实现添加/编辑参数机制?

Php 如何实现添加/编辑参数机制?,php,url,url-parameters,Php,Url,Url Parameters,假设这是我的当前URL: http://example.com/search?param1=foo&param2=bar 现在我想添加param3=baz。这就是代码: <a href="?param3=baz" >add param3</a> //=> http://example.com/search?param3=baz 看起来很难看,但没关系,没关系。现在,如果一个参数已经存在,我需要编辑它,会发生什么?假设这个例子: http://exampl

假设这是我的当前URL:

http://example.com/search?param1=foo&param2=bar
现在我想添加
param3=baz
。这就是代码:

<a href="?param3=baz" >add param3</a>
//=> http://example.com/search?param3=baz
看起来很难看,但没关系,没关系。现在,如果一个参数已经存在,我需要编辑它,会发生什么?假设这个例子:

http://example.com/search?param1=foo&param2=bar

现在,我如何创建一个链接来编辑
参数2的值?(加上保留其他参数)

在向现有查询字符串添加其他参数时,无法编写保留现有查询字符串的相对URI

你必须再做一次:

search?param1=foo&param=bar&param3=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().'&param3=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&param2=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&param2=bar&param3=baz
param1=foo&param3=baz
我使用
array\u merge
覆盖存在参数,如果我们得到url:

$url = 'http://example.com/search?param1=foo&param3=bar';
相同的代码输出将为:

param1=foo&param2=bar&param3=baz
param1=foo&param3=baz

我们覆盖exist参数并保存旧参数。

您怎么知道这次我要编辑现有参数,这次我要添加新参数?这意味着几乎不可能找到mood@stack ..... http\u build\u query()使用。。。参考: