谷歌如何使用不同的值处理两个相同的URL参数?

时间:2013-01-29 06:00:38

标签: php get

看看这个网址,你会明白我的意思。

https://www.google.com/search?q=site%3Aphpjs.org&q=date

当我转到该网址时,Google搜索栏中的搜索字词为site:phpjs.org date

Google如何将这两个参数“变形”在一起,以及如何在PHP中实现?

2 个答案:

答案 0 :(得分:4)

Google使用相同的q变量来完成同样的事情,而不是对空间进行编码。

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

你需要这样的东西:

$params = array();
foreach (explode('&', $_SERVER['QUERY_STRING']) as $param) {
    list($name, $value) = explode('=', $param, 2);
    $params[] = array(urldecode($name) => urldecode($value));
}

$params的内容:

array(
    array('q' => 'site:phpjs.org'),
    array('q' => 'date'),
);

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

$params[urldecode($name)][] = urldecode($value);

这会将$params更改为:

array('q' => array('site:phpjs.org', 'date'));

这样可以更容易地做到:

join(' ', $params['q']);
// "site:phpjs.org date"

答案 1 :(得分:0)

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

所以会发生的是使用最后一个值,除了google剥离URL并将变量的值连接在一起。我希望它有意义!