首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过添加GET参数来操作url字符串。

通过添加GET参数来操作url字符串。
EN

Stack Overflow用户
提问于 2011-04-28 03:55:54
回答 15查看 159.1K关注 0票数 97

我想在不重复?&的情况下,将GET参数添加到可能包含GET参数和可能不包含GET参数的URL。

示例:

如果我想添加category=action

代码语言:javascript
复制
$url="http://www.acme.com";
 // will add ?category=action at the end

$url="http://www.acme.com/movies?sort=popular";
 // will add &category=action at the end

如果你注意到了,如果找到了,我尽量不重复问号。

URL只是一个字符串。

添加特定GET参数的可靠方法是什么?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2011-04-28 04:05:16

基本方法

代码语言:javascript
复制
$query = parse_url($url, PHP_URL_QUERY);

// Returns a string if the URL has parameters or NULL if not
if ($query) {
    $url .= '&category=1';
} else {
    $url .= '?category=1';
}

更高级

代码语言:javascript
复制
$url = 'http://example.com/search?keyword=test&category=1&tags[]=fun&tags[]=great';

$url_parts = parse_url($url);
// If URL doesn't have a query string.
if (isset($url_parts['query'])) { // Avoid 'Undefined index: query'
    parse_str($url_parts['query'], $params);
} else {
    $params = array();
}

$params['category'] = 2;     // Overwrite if exists
$params['tags'][] = 'cool';  // Allows multiple values

// Note that this will url_encode all values
$url_parts['query'] = http_build_query($params);

// If you have pecl_http
echo http_build_url($url_parts);

// If not
echo $url_parts['scheme'] . '://' . $url_parts['host'] . $url_parts['path'] . '?' . $url_parts['query'];

你至少应该把它放在一个函数中,如果不是一个类。

票数 199
EN

Stack Overflow用户

发布于 2013-06-07 22:51:06

以下是公认答案的简短版本:

代码语言:javascript
复制
$url .= (parse_url($url, PHP_URL_QUERY) ? '&' : '?') . 'category=action';

编辑:正如在接受的答案中所讨论的,这是有缺陷的,因为它没有检查category是否已经存在。一个更好的解决方案是使用像in_array()这样的函数来处理$_GET -一个数组。

票数 65
EN

Stack Overflow用户

发布于 2011-04-28 04:06:30

代码语言:javascript
复制
$data = array('foo'=>'bar',
              'baz'=>'boom',
              'cow'=>'milk',
              'php'=>'hypertext processor');

$queryString =  http_build_query($data);
//$queryString = foo=bar&baz=boom&cow=milk&php=hypertext+processor

echo 'http://domain.com?'.$queryString;
//output: http://domain.com?foo=bar&baz=boom&cow=milk&php=hypertext+processor
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5809774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档