Лекции     Книги     Рефераты    
Диплом, курсовая на заказ

Создаем “облако тегов” (диаграмму ссылок)

news date июля.06.2008    categories Web-программирование > PHP    comments (5)

Облако тегов можно по праву назвать одним из традиционных приемов web 2.0. Действительно, этот прием помогает ориентироваться в большом количестве текстовой информации, представленной на страницах вашего веб-проекта.
Для создания диаграммы необходимо проанализировать ключевые слова статьи, провести подсчет слов и изменить размер шрифта для каждого из слов пропорционально частоте использования в тексте статьи.

Итак, у нас есть переменная $text, содержащая некий текст статьи, например, взятый из файла:

<?php
$text = file_get_contents(‘article.txt’);
?>

Для начала, создадим массив, элементами которого будут отдельные слова, входящие в этот текст (в качестве разделителя используем пробел):

<?php
$words = split(‘ ‘, $text);
?>

Теперь нам необходимо в цикле подсчитать вес каждого элемента массива (слова) в общей массе. Для этой цели нам понадобится служебный ассоциированный массив $word_infos, в который мы будем помещать слова в качестве индекса, и их количество в тексте в качестве значения.

<?php
$word_info = array(); // инициализируем массив
?>

<?php
foreach($words as $word)
{
$word = strtolower($word); // преобразуем слово в нижний регистр
if(strlen($word) > 1) // если длина слова более одного символа
{
if( ! array_key_exists($word, $word_info)) // если такого элемента нет в служебном массиве
$word_info[$word] = 0; // то создаем его со значением ноль

$word_info[$word] += 1; // увеличиваем на 1 кол-во этого слова в массиве

}
}
?>

Теперь найдем наиболее и наименее часто встречающиеся в тексте слова.

<?php
// создадим заведомо широкий “коридор” чисел
$max = -1000000;
$min = 1000000;
foreach(array_keys($word_info) as $word)
{
if($word_info[$word] > $max)
$max = $word_info[$word];
if($word_info[$word] < $min)
$min = $word_info[$word];
}
$ves = 18.0 / ($max – $min); // определяем “удельный вес” слова в тексте
?>

И выводим в браузер

<div style=”width:500px”>

<?php
$slova = array_keys($word_info);
sort($slova);

foreach($slova as $word)
{
$font_size = (int)(11+($word_info[$word] * $ves));
echo “<a href=http://yoursite.ru?q=$word style=\”font-size:$font_size\”>$word</a> “;
}
?>
</div>

Все готово. Как всегда, ждем ваших вопросов и комментариев :)

Обсуждения

5 комментариев к “Создаем “облако тегов” (диаграмму ссылок)”
  1. vovaNux пишет:

    Отличная статья. Только есть одно замечание: при разбиении статьи на слова надо бы поработать с регуляркой и поубирать все знаки препинания, иначе подсчёт слов будет не совсем точным.

  2. admin пишет:

    Согласен. Подготовлю урок по регулярным выражениям… :)

  3. beatles пишет:

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

  4. qwerty пишет:

    Ошибка при выводе – надо так

    arsort($word_info);

    foreach($word_info as $word => $val)
    {
    $text_filt .= $word.” “;
    }

    С размерами шрифтов соотв, мне просто не надо было

    Строка для проверки – раз два два три три три четыре

  5. qwerty пишет:

    Сорри, задача другая у меня, не совсем прав :)

Добавить комментарий

Вы должны войти



© 2009 - 2010 | Webteach.ru | Образовательный портал