Получение ключевого слова, по которому пришли на сайт

На некоторых форумах, если перейти на них с поисковика, подсвечиваются ключевые слова, которые были заданы в поиске. Это помогает быстрее найти нужную информацию. Теоретически можно пойти дальше и немного менять страницу в завимости от категории поискового запроса посетителя.

Я написал небольшую функцию, которая определяет поисковый запрос по URL.

PHP:
  1. echo extractKeyword('http://www.yandex.ru/yandsearch?text=php+%D0%B2+southpark&lr=187');

выведет "php в southpark".

Пример использования:

PHP:
  1. <?
  2.     $keyword = extractKeyword($_SERVER['HTTP_REFERER']);
  3.     if (stripos($keyword, 'southpark')!==false && stripos($keyword, 'php')===false) {
  4.         echo('<div class="notice">Это сайт о PHP, а не о <a href="http://www.southpark.org.ru/">SouthPark</a></div>');
  5.     }
  6. ?>

Вот сама функция

PHP:
  1. /**
  2. * Extract keyword from search URL
  3. *
  4. * @param string $url ex: http://google.com/search?q=%D1%82%D0%B5%D1%81%D1%82&btnG=Search
  5. * @return string Keyword or false
  6. */
  7. function extractKeyword($url) {
  8.     $searchEngines = array(
  9.         'google.' => 'q',
  10.         'yahoo.' => 'p',
  11.         'live.' => 'q',
  12.         'msn.' => 'q',
  13.         'aol.' => 'query',
  14.         'aol.' => 'encquery',
  15.         'lycos.' => 'query',
  16.         'ask.' => 'q',
  17.         'altavista.' => 'q',
  18.         'netscape.' => 'query',
  19.         'cnn.' => 'query',
  20.         'looksmart.' => 'qt',
  21.         'about.' => 'terms',
  22.         'mamma.' => 'query',
  23.         'alltheweb.' => 'q',
  24.         'gigablast.' => 'q',
  25.         'voila.' => 'rdata',
  26.         'virgilio.' => 'qs',
  27.         'baidu.' => 'wd',
  28.         'alice.' => 'qs',
  29.         'yandex.' => 'text',
  30.         'najdi.' => 'q',
  31.         'aol.' => 'q',
  32.         'club-internet.' => 'q',
  33.         'mama.' => 'query',
  34.         'seznam.' => 'q',
  35.         'search.' => 'q',
  36.         'szukaj.' => 'szukaj',
  37.         'szukaj.' => 'qt',
  38.         'netsprint.' => 'q',
  39.         'szukacz.' => 'q',
  40.         'yam.' => 'k',
  41.         'pchome.' => 'q',
  42.         'mail.ru' => 'q',
  43.         'rambler.ru' => 'words',
  44.         'meta.ua' => 'q',
  45.         'bigmir.net' => 'q',
  46.         'aport.ru' => 'r',
  47.         'a-counter' => 'sub_data',
  48.         'i.ua' => 'q'
  49.     );
  50.  
  51.     $host = parse_url($url, PHP_URL_HOST);
  52.     $query = parse_url($url, PHP_URL_QUERY);
  53.     $queryItems = array();
  54.     parse_str($query, $queryItems);
  55.  
  56.     foreach ($searchEngines as $needle=>$param) {
  57.         if (strpos($host, $needle)!==false && !empty($queryItems[$param])) {
  58.             return urldecode($queryItems[$param]);
  59.         }
  60.     }
  61.  
  62.     return false;
  63. }

Массив $searchEngines был почти полностью одолжен из скрипта Google Analytics urchin.js. Поэтому поддерживаются все поисковики, которые сейчас определяет Google Analytics плюс добавлены несколько русских и украинских поисковиков.

Можно легко добавить свои любимые поисковики. Если будете добавлять, отпишитесь в комментариях, может быть, они пригодятся не только вам.


Понравилось?

  1. Подпишись через RSS
  2. Расскажи о http://php.southpark.com.ua друзьям.
    Все способы хороши: ICQ, E-mail, свой блог, комментарий в чужом блоге или сообщение на форуме
  3. Добавь статью на news2.ru, Хабрахабр или в закладки

Огромное спасибо!

Похожие статьи

И не стесняйтесь комментировать - у меня стоит плагин, который убирает rel="nofollow" у людей, которые написали больше 5 комментариев.

RSS feed | Trackback URI

7 комментариев »

Comment by Danaki
2008-01-30 16:06:49

Оффтопик. Предлагаю тебе поставить плагинчик http://blog.gate.lv/2008/01/17/wp-russian-number-of-comments/
блог будет смотреться лучше.

2008-01-30 18:02:49

Установил, спасибо.

 
 
Comment by Danaki
2008-01-30 23:18:18

Не зач то, теперь глаза не режет :D

 
2008-02-01 10:56:03

[...] Получение ключевого слова, по которому пришли на сайт [...]

 
 
Comment by Александр Subscribed to comments via email
2008-06-06 09:07:36

Как быть, когда поискавые запросы "приходят" в различных кодировках?

2008-06-10 18:00:49

Определять язык и кодировку :)
Вот так - http://php.southpark.com.ua/2007/language-detection/

 
 
Имя (required)
E-mail (required - never shown publicly)
URL
Текст комментария
You may use <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> in your comment.