|
|
В этой статья я бы хотел поделиться с вами своей новой разработкой – анализатором поисковых запросов с популярных поисковых систем, посмотреть, что это такое, и как работает можно здесь (https://wm-help.net/?module=word-stat). Поначалу данный анализатор поисковых запросов я писал исключительно для своих нужд, но по просьбам пользователей уже успевших посетить данную страницу решил написать статью и дать исходник PHP-класса, на котором основывается вся система статистики поисковых запросов из поисковых систем.
И так, основным источником информации служит переменная $HTTP_REFERER, в которой содержится ссылка на страницу, с которой пришли к вам на сайт. А так же переменная $_SERVER['REQUEST_URI'], в которой указан полный путь к текущей странице. Благодаря этим данным и работает данный класс, из $HTTP_REFERER мы получаем поисковый запрос, страницу результатов поиска и поисковый сервер. А из $_SERVER['REQUEST_URI'] точную ссылку на то, куда попал посетитель по данному запросу.
Основная сложность в разработке и реализации данного
PHP-класса заключается в том, что каждый поисковый сервер
использует свои названия для переменных, в которых содержатся все сведения о
запросе пользователя (текст запроса, страница в результатах выдачи, другие
параметры). Поэтому есть единственно правильное решение – писать для каждой
поисковой системы свой анализатор поисковых запросов, отсюда и сложности – в
мире существует более 50 популярных поисковых систем, а сколько их существует
вообще – никто не знает.
Еще одной проблемой является
невозможность получения точной страницы результатов поиска, т.к. количество
ссылок в выдаче поисковой системы пользователь может определять сам, поэтому
можно узнать только приблизительную страницу результатов поиска.
К проблемам можно еще отнести
особенности некоторых поисковых систем, например Google и
MSN – используют у себя UTF-8, а Яндекс – KOI8-R (при поиске не
на первой странице результатов).
Несмотря на все сложности, которые описаны выше, у меня получился php класс для более-менее корректного анализа поисковых запросов для следующих поисковых систем:
PHP-класс SearchWord имеет следующую структуру:
class SearchWord
{
var $SearchSite; // Адрес поисковика
var $SearchWord; // Поисковый запрос (фраза по которой вас нашли)
var $SearchRefer; // Ссылка на страницу, откуда пришли
var $SearchRPage; // Ссылка на страницу куда попали
var $SearchPage; // Номер страницы в результатах выдачи (примерно)
var $SearchTime; // Время обращения к вашему сайту
function Yandex_str($str) // анализатор для Яндекса
{…}
function Rambler_str($str) // для Рамблера
{…}
… // функции анализа других поисковиков
function Msn_str($str) // для MSN
{…}
function SearchWords($SRefer, $SPage, $STime) // производит анализ
{…}
function SearchWordsFromClass($SSW) // производит анализ, получая все данные из класса SaveSearchWord (смотрите ниже)
{…}
function Load($arr) // загружает сохраненный результат анализа из массива (для ведения статистики)
{…}
}
Класс SaveSearchWord – для хранения запросов к сайту:
class SaveSearchWord
{
var $SRefer; // Откуда пришли
var $SPage; // Куда попали
var $STime; // Время обращения к вашему сайту
function Load($arr) // загрузка значений из массива
{
$this->SRefer = trim(@$arr[0]);
$this->SPage = trim("http://".$_SERVER['HTTP_HOST'].trim(@$arr[1]));
$this->STime = trim(@$arr[2]);
}
function Set($SRefer, $SPage, $STime) // установка значений
{
$this->SRefer = trim($SRefer);
$this->SPage = trim($SPage);
$this->STime = trim($STime);
}
}
Для того, что бы понять, как пользоваться классом SearchWord создадим небольшой PHP-скрипт, в котором реализуем базовые возможности данного класса:
<?php
include 'word-stat.class.php';
if (isset($HTTP_REFERER)) // установлена ли переменная $HTTP_REFERER
{
$new_record = new SaveSearchWord(); // Создание нового
экземпляра класса SaveSearchWord
$new_record->Set($HTTP_REFERER, $_SERVER['REQUEST_URI'], time()); //
Установка значений
$word_stat = new SearchWord(); // Создание нового экземпляра класса SearchWord
$word_stat->SearchWordsFromClass($new_record); // Анализ значений
if (strlen($word_stat->SearchWord)>2) // Если длинна поискового запроса больше двух
{
echo "<pre>";
print_r($word_stat); // Пачать всех значений объекта
echo "</pre>";
}
}
?>
Скачать PHP-класс данного анализатора поисковых запросов можно по ссылке:
https://wm-help.net/download/word-stat.class.php.zip
Посмотреть, как работает статистика, основанная на данном
классе:
https://wm-help.net/?module=word-stat