0

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

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

当我转到那个网址时,谷歌搜索栏中的搜索词是site:phpjs.org date.

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

4

2 回答 2

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"
于 2013-01-29T06:06:41.457 回答
0

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

所以会发生什么是最后一个值被使用,除了谷歌剥离 URL 并将变量的值连接在一起。我希望这是有道理的!

于 2013-01-29T06:07:08.743 回答