繁体   English   中英

更改使用parse_url的get变量在php中不起作用

[英]changing get variable using parse_url not working in php

我看过SO上与该问题相关的每篇文章,但我无法弄清楚。 此代码直接从另一个SO帖子获取,并被标记为正确的工作答案:

$query = $_GET;
// replace parameter(s)
$query['d'] = 'new_value';
// rebuild url
$query_result = http_build_query($query);
// new link
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?<?php echo $query_result; ?>">Link</a>

同样,直接取自另一篇文章。 当我尝试此代码时,我将$_GET更改为要更改的实际URL。 当代码到达$query['d']部分时,它告诉我得到了illegal string offset ,并且错误是指定的索引。 因此,我解析了URL,然后执行parse_str($query, $output) ,这又使我可以执行$output['d'] ,然后可以为该变量设置一个新值。 如果我同意,那就很好。

但是然后我转到http_build_query行,它告诉我它正在期待一个数组或对象,因此无法构建新的URL。 这是我的代码:

$link = parse_url('https://www.google.com/search?source=hp&ei=85GhW6CNHoSqsgXnzoD4Ag&q=coding+tutorial&btnK=Google+Search&oq=coding+tutorial', PHP_URL_QUERY);

 parse_str($link, $output);
 $output['oq'] = 'new value';

 $query_result = http_build_query($link);
echo $query_result;

这段代码产生了http_build_query函数想要一个数组或对象...我想我没有以某种方式给它吗? 我需要做什么才能使它正常工作?

如果要在修改查询参数后重建完整的URL,可以执行以下操作:

$url = 'https://www.google.com/search?source=hp&ei=85GhW6CNHoSqsgXnzoD4Ag&q=coding+tutorial&btnK=Google+Search&oq=coding+tutorial';
$link = parse_url($url, PHP_URL_QUERY);
parse_str($link, $output);
$output['oq'] = 'new value';
echo substr($url, 0, strpos($url, '?') + 1) . http_build_query($output);

输出:

https://www.google.com/search?source=hp&ei=85GhW6CNHoSqsgXnzoD4Ag&q=coding+tutorial&btnK=Google+Search&oq=new+value

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM