[英]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.