Просто взгляните на этот URL, и вы поймете, что я имею в виду.
https://www.google.com/search?q=site%3Aphpjs.org&q=date
И когда я site:phpjs.org date
к этому URL-адресу, поисковый site:phpjs.org date
строке поиска Google – это site:phpjs.org date
.
Как Google «сгруппирует» два параметра вместе и как это сделать в PHP?
Вместо того, чтобы кодировать пространство, 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"
Он всегда будет использовать значение последней переменной в предоставленном URL-адресе. Это более стандартный способ, и не только Google справляется с этим так. Вы можете попробовать сами, создав страницу с именем index.php
в корневом каталоге. Затем перейдите на страницу через http://example.com/index.php?q=John&q=Billy
. Внутри index.php добавьте это: <?php echo $_GET['q']; ?>
<?php echo $_GET['q']; ?>
.
Так что происходит, что последнее значение используется, за исключением того, что google удаляет URL-адрес и объединяет значения переменных вместе. Надеюсь, это имеет смысл!