如何获取电流 URL 和更改参数 PHP
How to get current URL and change parameter PHP
我有一个 URL 这样的:
muliba/?i=page.alama&pro=as
然后我创建了一个 link 这样的:
<a href="<?php echo http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]."&pro=as";?>">AS</a>
<a href="<?php echo http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]."&pro=en";?>">EN</a>
如果我打开 link,参数将添加到已定义的参数旁边,如下所示:
muliba/?i=page.alama&pro=as&pro=en
我怎样才能得到这样的结果?
muliba/?i=page.alama&pro=as
muliba/?i=page.alama&pro=en
谢谢
根据 Scuzzy
answer and jlcolon13
Modifications on Scuzzy
answer in this Question
的说法,我合并了两个答案以使您的回答更简单。只需复制下面的代码并将其粘贴到您的文件中!
function merge_querystring($url = null,$query = null,$recursive = false){
// $url = 'https://www.google.com?q=apple&type=keyword';
// $query = '?q=banana';
// if there's a URL missing or no query string, return
if($url == null)
return false;
if($query == null)
return $url;
// split the url into it's components
$url_components = parse_url($url);
// if we have the query string but no query on the original url
// just return the URL + query string
if(empty($url_components['query']))
return $url.'?'.ltrim($query,'?');
// turn the url's query string into an array
parse_str($url_components['query'],$original_query_string);
// turn the query string into an array
parse_str(parse_url($query,PHP_URL_QUERY),$merged_query_string);
// merge the query string
if ($recursive == true) {
$merged_result = array_filter(array_merge_recursive($original_query_string, $merged_query_string));
} else {
$merged_result = array_filter(array_merge($original_query_string, $merged_query_string));
}
// Find the original query string in the URL and replace it with the new one
$new_url = str_replace($url_components['query'], http_build_query($merged_result), $url);
// If the last query string removed then remove ? from url
if(substr($new_url, -1) == '?') {
return rtrim($new_url,'?');
}
return $new_url;
}
用法
<a href="<?=merge_querystring($url,'?pro=en');?>">EN</a>
<a href="<?=merge_querystring($url,'?pro=as');?>">AS</a>
我有一个 URL 这样的:
muliba/?i=page.alama&pro=as
然后我创建了一个 link 这样的:
<a href="<?php echo http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]."&pro=as";?>">AS</a>
<a href="<?php echo http://".$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]."&pro=en";?>">EN</a>
如果我打开 link,参数将添加到已定义的参数旁边,如下所示:
muliba/?i=page.alama&pro=as&pro=en
我怎样才能得到这样的结果?
muliba/?i=page.alama&pro=as
muliba/?i=page.alama&pro=en
谢谢
根据 Scuzzy
answer and jlcolon13
Modifications on Scuzzy
answer in this Question
的说法,我合并了两个答案以使您的回答更简单。只需复制下面的代码并将其粘贴到您的文件中!
function merge_querystring($url = null,$query = null,$recursive = false){
// $url = 'https://www.google.com?q=apple&type=keyword';
// $query = '?q=banana';
// if there's a URL missing or no query string, return
if($url == null)
return false;
if($query == null)
return $url;
// split the url into it's components
$url_components = parse_url($url);
// if we have the query string but no query on the original url
// just return the URL + query string
if(empty($url_components['query']))
return $url.'?'.ltrim($query,'?');
// turn the url's query string into an array
parse_str($url_components['query'],$original_query_string);
// turn the query string into an array
parse_str(parse_url($query,PHP_URL_QUERY),$merged_query_string);
// merge the query string
if ($recursive == true) {
$merged_result = array_filter(array_merge_recursive($original_query_string, $merged_query_string));
} else {
$merged_result = array_filter(array_merge($original_query_string, $merged_query_string));
}
// Find the original query string in the URL and replace it with the new one
$new_url = str_replace($url_components['query'], http_build_query($merged_result), $url);
// If the last query string removed then remove ? from url
if(substr($new_url, -1) == '?') {
return rtrim($new_url,'?');
}
return $new_url;
}
用法
<a href="<?=merge_querystring($url,'?pro=en');?>">EN</a>
<a href="<?=merge_querystring($url,'?pro=as');?>">AS</a>