Регулярное выражение для обнаружения поисковой системы и поиска слов - PullRequest
1 голос
/ 26 декабря 2009

Мне нужно обнаружить поисковые системы, которые ссылаются на мой сайт. Поскольку каждая поисковая система имеет разные строки запроса для поиска (например, Google использует 'q =', yahoo использует 'p ='), я создал базу данных для поисковых систем с их шаблонами регулярных выражений URL.

В качестве примера: http://www.google.com/search?q=blabla&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-GB:official&client=firefox-a

регулярное выражение, которое я создал для Google:

(http:)(\\/)(\\/)(www)(\\.)(google)(\\.).*(\\/)(search).*(&q=|\\?q=).*

(я новичок в регулярных выражениях, но пока это работает)

Определяет, что URL принадлежит Google. Моя проблема заключается в том, что мне нужно извлечь поисковые слова из URL выше или из других поисковых систем. Но я не знаю, как сопоставить его с регулярным выражением. Я попытался извлечь строку запроса из URL с помощью функций PHP и сопоставить ее с шаблоном, но он ничего не возвращал.

Надеюсь, я смог объяснить это достаточно ясно.

Есть предложения?

Ответы [ 2 ]

3 голосов
/ 26 декабря 2009

Я бы использовал parse_url для разбора URL-адреса и parse_str для разбора URL-запроса.

$url = 'http://www.google.com/search?q=blabla&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu%3Aen-GB%3Aofficial&client=firefox-a';
$parts = parse_url($url);
if (isset($parts['query'])) {
    parse_str($parts['query'], $parts['query']);
}
var_dump($parts);
2 голосов
/ 26 декабря 2009

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

Я нашел его с помощью этого поиска для «извлечения строки запроса из URL Google Rerer» . Похоже, в поиске было несколько полезных обращений ... Я только что сделал первые несколько попыток.

...