Ключевое слово из строки поиска (Rambler, Yandex, Google)

allin

Новичок
Ключевое слово из строки поиска (Rambler, Yandex, Google)

Всем привет!

Есть ли готовые функции обработки этих строк:

http://yandex.ru/yandsearch?text=ламинат&lr=213&stpar2=/h1/tm10/s1&stpar4=/s1&stpar1=/u0

http://nova.rambler.ru/search?btnG=Найти!&query=%D0%BB%D0%B0%D0%BC%D0%B8%D0%BD%D0%B0%D1%82

http://www.google.ru/#hl=ru&source=hp&q=ламинат&btnG=Поиск+в+Google&lr=&aq=f&oq=ламинат&fp=2eb01c20b443f195

на получение ключевого слова, которое пользователь ввел в поиск?
 

shureen

Милорд Лось Кристофер
Напиши сам, дело то пустяковое у яндекса параметр text, у рамблера btnG а у гугла q. Остаётся только распарсить адреса и исходя из сайта возвратить нужное значение
 

allin

Новичок
Написать можно, несложно :)
Ну, зачем делать работу и "ловить" баги, если ее уже кто-то сделал.
 

Sigorma

Новичок
PHP:
<?php
$url ="http://yandex.ru/yandsearch?text=%D0%BB%D0%B0%D0%BC%D0%B8%D0%BD%D0%B0%D1%82&lr=213&stpar2=%2Fh1%2Ftm10%2Fs1&stpar4=%2Fs1&stpar1=%2Fu0";

$parse = parse_url(urldecode($url));

$parse['query'] = explode("&", $parse['query']);

print_r($parse);
?>
 

Фанат

oncle terrible
Команда форума
Ну, зачем делать работу и "ловить" баги, если ее уже кто-то сделал.
это логично.
но проще искать гуглем. он видит миллионы страниц, а в твой топик зайдет от силы десяток человек.
 

Rin

*
PHP:
    /**
     * Возвращает поисковую фразу в кодировке UTF-8 из URL популярных поисковых серверов.
     *
     * @param   string       $url
     * @param   string|null  $host
     * @return  string|bool
     */
    function search_phrase($url, &$host = null)
    {
        $host = null;
        if (! $url) return false;
        $a = @parse_url($url);
        if (! @$a['host']) return false;
        $host = $a['host'];
        if (! @$a['query']) return false;

        $params = array(
            'yandex.ru'     => 'text',
            'www.yandex.ru' => 'text',

            'yaca.yandex.ru'        => 'text',
            'search.yaca.yandex.ru' => 'text',

            'images.yandex.ru' => 'text',

            'go.mail.ru' => 'q',

            'nova.rambler.ru' => 'query',

            'google.ru'       => 'q',
            'google.com'      => 'q',
            'www.google.ru'   => 'q',
            'www.google.com'  => 'q',

            'search.yahoo.com' => 'p',

            'bing.com'     => 'q',
            'www.bing.com' => 'q',

            'sm.aport.ru' => 'r',

            'nigma.ru'     => 's',
            'www.nigma.ru' => 's',

            'www.daemon-search.com' => 'q',
        );

        if (! array_key_exists($host, $params)) return false;
        $param = $params[$host];
        parse_str($a['query'], $query);
        $s = @$query[$param];
        if (! is_string($s)) return false;

        if (! UTF8::is_utf8($s))
        {
            $s = UTF8::convert_from($s, 'cp1251');
            if (! UTF8::is_utf8($s)) return false;
        }
        return $s;
    }
PHP UTF8
 

Avenus

Under Glory Yield
Кстати, Rin, не лучше ли mb_string использовать?
А то ведь целую библиотеку utf8 тащить ради пары функций :)
 

zerkms

TDD infected
Команда форума
Avenus
не лучше.

1. код скопипастенный откуда-то из другого проекта.
2. в том классе так и так реализована логика по выбору mb_* или другие реализации.
 

fixxxer

К.О.
Партнер клуба
Чото как то у вас все сложно.
PHP:
$engines = array(
    'yandex.ru' => 'text',
    //...
);
$host = preg_replace('/^www\./', '', parse_uri($url, PHP_URL_HOST));
if (isset($engines[$host])) {
    parse_str(parse_uri($url, PHP_URL_QUERY), $qs);
    if (!empty($qs[$engines[$host]])) {
        return $qs[$engines[$host]];
    }
}
return null;
 
Сверху