Модуль подсчёта ключевых слов в статье
Доброго времени суток, Вам, читающим эти строки !!!
Как я и обещал в предыдущей статье -
Быстрый подсчёт ключевых слов в статье
в этой статье я расскажу Вам как самостоятельно написать модуль для решения этой задачи.
Как всё это работает Вы можете увидеть здесь -
Онлайн-сервис подсчёта ключевых слов
На самом деле логика работы такого модуля достаточно проста и сводится к следующим основным шагам:
1.) Получить текст статьи из текстового файла
2.) Убрать из текста все символы кроме букв заменив их пробелами
3.) Разбить полученный текст на массив, собирая статистику по каждому слову.
Вот собственно и всё :))))
Ну а теперь код -
<?php
// 1.) Получить текст статьи из текстового файла
//имя файла статьи берем из значения параметра pf переданного по GET
$paper_file = substr($_GET['pf'], 0, 250);
if ( !$paper_file )
$paper_file = 'home.txt';
if ( file_exists($paper_file) )
{
$content = file($paper_file);
}
?>
Обращаю Ваше внимание, что данный код предполагает использование скрипта на вашем сайте для файлов статей хранимых на этом же сайте.
Для того, чтобы реализовать выгрузку из внешнего файла - Вам нужно сделать механизм выгрузки статьи из внешнего файла.
Этот момент уже реализован в сервисе
Онлайн-сервис подсчёта ключевых слов
Но не описан здесь.
Как реализовать выгрузку файла на сайт я уже описывал в статье -
Выгрузка файла на сайт
Поэтому здесь я её касаться не буду.
<?php
// 2.) Убрать из текста все символы кроме букв заменив их пробелами
//заменяем спец. символы пробелами
function kg_replace_special_chars($line)
{
//определяем длину строки
$line_len = strlen($line);
//перебираем строку
for ( $i = 0; $i < $line_len; $i++ )
{
$symbol_code = ord($line[$i]);
//если символ - это буква -
if ( ($symbol_code > 63 && $symbol_code < 91) || ($symbol_code > 95 && $symbol_code < 122)
|| ($symbol_code > 190 && $symbol_code < 256) )
{
//ничего с ним не делаем
}
else {
//заменяем на пробел
$line[$i] = ' ';
}
}
return $line;
}
?>
Кстати, если вдруг Вам понадобится исследовать коды всех символов и спец символов из кодировки ASCII, то на всякий случай привожу небольшую
функцию и для этих целей :)))
<?php
//выводим табличку кодов символов
function show_symbol_codes(&$view)
{
for ( $i = 0; $i < 256; $i++ )
{
$view .= '<span style="color: #0000ff;">' . chr($i) . '</span> --- '.$i.' ';
}
}
?>
И собственно последний шаг -
<?php
// 3.) Разбить полученный текст на массив, собирая статистику по каждому слову
$view = '';
//перебираем все строки статьи
$l = 0;
$words_statistic = array(); //найденные слова
$words_statistic_count = array(); //статистика найденных слов
foreach ( $content as $line )
{
//заменяем знаки препинания и прочие спец. символы пробелами
$line = kg_replace_special_chars($line);
//$view .= $line;
//разбиваем строку на слова
$words = explode(" ", $line);
//считаем количество слов
$words_count = count($words);
for ( $i = 0; $i < $words_count; $i++ )
{
//если слово уже есть в массиве - увеличиваем его статистику
if ( in_array($words[$i], $words_statistic) )
{
$words_statistic_count[$words[$i]] = $words_statistic_count[$words[$i]] + 1;
}
else {
//если слова еще нет в массиве слов - добавляем его туда
$words_statistic[] = $words[$i];
$words_statistic_count[] = $words[$i];
$words_statistic_count[$words[$i]] = 1;
}
}
$l++;
}
//show_symbol_codes(&$view);
//показать слова, у которых статистика больше заданного значения
$value = intval($_GET['v']);
if ( !$value )
$value = 1;
$count_words_statistic = count($words_statistic_count);
for ( $i = 0; $i < $count_words_statistic; $i++ )
{
if ( $words_statistic[$i] != '' )
{
if ( $words_statistic_count[$words_statistic[$i]] > $value )
$view .= $words_statistic[$i] . ' ' . $words_statistic_count[$words_statistic[$i]] . '|';
}
}
?>
Работать описанный код будет аналогично тому, как он работает тут -
kg
И самое главное - после всех манипуляций не забудьте вывести значение переменной $view на страницу в нужном месте.
т. е. примерно так -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<title>Keywords Generator</title>
</head>
<body>
<?php
echo $view;
?>
</body>
</html>
Собственно теперь Вы владеете всей информацией, чтобы создать такой модуль.
Желаю Вам удачи !!! :))))
Ну а если вдруг что-то не получается или у Вас нехватает опыта, но есть маленький (или выше) :))) бюджет -
обращайтесь