Пол дня искал в архивах собственноручно разработанные функции обработки текста. Всё это было в 1 варианте этого блога, содержимое которого благополучно сдохло вместе с 3FN. Что бы не терялось:
function keyword($text,$lenkey,$kolkey) { $text=strtolower(strip_tags($text));//удаляем таги и все в нижний регистр preg_match_all("/[а-я]{".$lenkey.",}+/is",$text,$word); $return=array_flip(array_count_values ($word[0]));//получаем слова и частоту, меняем местами ключ-значение krsort($return);//сортируем по убыванию $return = array_slice ($return, 0,$kolkey);//отрезаем верхушку массива return $return; }
Пользоваться так:
$rezult=keyword($text,6,10);
6-минимум символов в ключевике
10-ключевиков
$rezult- массив ключей
$rezult=keyword($text,6,10); $rezult_keyword=implode(", ",$rezult);
$rezult_keyword- слова через запятую
Метки: ключевик
Функция, существующая в данном виде, корректно работает только в том случае, если количество ключевиков в тексте разное. То есть если в тексте слова-1 – 5 штук, слова-2 – 4 штуки, слова-3 – 3 штуки и т. д. (особенности функции array_flip()). Если количество ключевиков совпадает (очень часто, так как количество ключевиков в русском тексте обычно невелико из-за различных окончаний одного и того же слова), например, 3-4 повторения нескольких ключевиков, то в результате получаем не наиболее часто используемые слова в тексте, а следующее распределение: допустим найдено 3 слова-1, 3 слова-2, 2 слова-3, 2 слова-4, 1 слово-5, то получаем – слово-2, слово-4, слово-5 (вместо слово-1, слово-2, слово-3). Получается немного запутанно
…
В общем я предлагаю заменить следующие строки:
$return=array_flip(array_count_values ($word[0]));
krsort($return);
$return = array_slice ($return, 0,$kolkey);
на
$return = array_count_values($word[0]);
arsort($return);
$return = array_slice($return, 0, $kolkey);
$return = array_keys($return);
А заодно и в регулярке заменить “[а-я]” на “[а-яa-z]” для большей универсальности – работы с англоязычными кейвордами.
Кстати, где-то валялся архивчик старого сайта. По крайней мере посты. Если нужно – могу скинуть…
Спасибо, m$earcher!
Действительно моя функция кривая.
Правильней:
function keyword($text,$lenkey,$kolkey)
{
$text=strtolower(strip_tags($text));
preg_match_all(“/[а-я]{“.$lenkey.”,}+/is”,$text,$word);
$return = array_count_values($word[0]);
arsort($return);
$return = array_slice($return, 0, $kolkey);
$return = array_keys($return);
return $return;
}
m$earcher, если не сложно, то скиньте что осталость от былого на aquamiry@tut.by
Действительно молодец! Поддерживаю!
Благодарю!!!У Вас часто появляются очень интересные посты! Очень поднимаете мое настроение.
Было бы интересно узнать поподробнее может у вас есть ещё что не выложили тут буду ждать обновлений.
ЭТО СУПЕР СПАСИБО ОГРОМНОЕ
Спасибо – очень помогло!
Отличный скрипт!
Hats off to whoever wrote this up and potesd it.
Artilecs like this really grease the shafts of knowledge.