0

このURLを見るだけで、私が何を意味するのかがわかります。

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

そして、そのURLにアクセスすると、Googleの検索バーの検索語はですsite:phpjs.org date

Googleは2つのパラメータをどのように「モーフィング」しますか?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の最後の変数の値を常に使用します。これはより標準的な方法であり、この方法で処理するのはGoogleだけではありません。index.phpルートディレクトリに名前の付いたページを作成して、自分で試すことができます。次に、を介してページにアクセスしますhttp://example.com/index.php?q=John&q=Billy。index.php内にこれを追加します:<?php echo $_GET['q']; ?>

つまり、GoogleがURLを削除し、変数の値を連結することを除いて、最後の値が使用されます。私はそれが理にかなっていることを願っています!

于 2013-01-29T06:07:08.743 に答える