首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >google如何处理两个具有不同值的相同URL参数?

google如何处理两个具有不同值的相同URL参数?
EN

Stack Overflow用户
提问于 2013-01-29 14:00:38
回答 2查看 210关注 0票数 0

只要看看这个url,你就会明白我的意思。

代码语言:javascript
复制
https://www.google.com/search?q=site%3Aphpjs.org&q=date

当我打开这个网址时,谷歌搜索栏中的搜索词是site:phpjs.org date

Google如何将这两个参数“变形”在一起,在PHP中又是如何做到的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-29 14:06:41

谷歌没有对空格进行编码,而是使用相同的q变量来完成相同的任务。

不幸的是,PHP没有这样做的内置能力,因为连续出现相同的查询字符串参数将覆盖第一个参数,除非使用[]后缀。

你需要这样的东西:

代码语言:javascript
复制
$params = array();
foreach (explode('&', $_SERVER['QUERY_STRING']) as $param) {
    list($name, $value) = explode('=', $param, 2);
    $params[] = array(urldecode($name) => urldecode($value));
}

$params的内容

代码语言:javascript
复制
array(
    array('q' => 'site:phpjs.org'),
    array('q' => 'date'),
);

或者,您可以将循环体更改为:

代码语言:javascript
复制
$params[urldecode($name)][] = urldecode($value);

这会将$params更改为:

代码语言:javascript
复制
array('q' => array('site:phpjs.org', 'date'));

这将使我们更容易做到以下几点:

代码语言:javascript
复制
join(' ', $params['q']);
// "site:phpjs.org date"
票数 4
EN

Stack Overflow用户

发布于 2013-01-29 14:07:09

它将始终使用提供的url中的最后一个变量的值。这更像是一种标准的方式,而且不仅仅是谷歌这样处理它。您可以通过在根目录中创建一个名为index.php的页面来亲自尝试。然后通过http://example.com/index.php?q=John&q=Billy访问该页面。在index.php中添加以下内容:<?php echo $_GET['q']; ?>

因此,除了google剥离URL并将变量的值连接在一起之外,使用的是最后一个值。我希望这是有意义的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14576597

复制
相关文章

相似问题

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