- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Как на PHP посчитать слова в тексте и выбрать самые часто встречающиеся?
Надо сделать подсчет как на этом сайте:
http://site-emulator.info/oddities/news_2007-05-31-22-52-32-434.html
По какому алгоритму идти... Весь инет прошерстил...
Подскажите пожалуйста...
Вообще ты не по адресу пришел, но раз пришел:)
// Извлекаем содержимое из файла site.ru/index.htm
$content = file_get_contents("www.site.ru");
// Массив регулярных выражений
$search = array ("'<script[^>]*?>.*?</script>'si",
"'<[\/\!]*?[^<>]*?>'si",
"'([\r\n])[\s]+'",
"'&(quot|#34);'i",
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e");
// Массив замены
$replace = array ("",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
// Осуществляем удаление тэгов и вывод текста в окно браузера
$content = preg_replace($search, $replace, $content);
//Разбиваем текст на слова не менее 3 букв длинной и заносим в массив $out
preg_match_all("|\b[\w]{3,}\b|s", $content, $out, PREG_PATTERN_ORDER);
//Ищем самое часто встречаемое слово и заносим в массив $result
$count=count($out[0]);
$counter=0;
for($i=0; $i<$count; $i++)
{
for($j=1; $j<$count; $j++)
{
if(strtolower($out[0][$i])==strtolower($out[0][$j]))
{
$counter++;
$result[$i]=$counter;
}
}
//ищем максимум в массиве $result
$counter=0;
}
$max_num=0;
for ($i=0; $i<count($result); $i++)
{
if($result[$i]>$max_num)
{
$max_num=$result[$i];
$index=$i;
}
}
//выводим результат
echo "Слово <b>".$out[0][$index]."</b> самое часто встречаемое - <b>".$result[$index]."</b> раз";
?>
Код малость сыроват, сварганил за час:) но рабочий, у меня по крайне мере
А вообще по вопросам PHP иди сюда
Надеюсь поможет
А вообще по вопросам PHP иди сюда
Надеюсь поможет
не поможет! мужчина, не давайте людям вредных советов!!!
http://phpclub.ru/talk/ — наверное, пока что единственный форум, где дают нормальные советы реальные профессиональные программисты.
Updated:
про код молчу, работать будет, но написан полубред.
Ребята, спасибо огромное. Прохлады вам в жарком лете и тепла в морозы...
получил это анонимное блеяние в коментариях.
Рассказываю по пунктам!
- на любом большом форуме новички ноют, что их унижают, но если тычут носом те, кто уже видал виды, значит, не просто так тычет;
- про любой большой форум можно сказать, что на нем осталось 2-3 дедушки, которые чего-то там о себе возомнили и не дают никому дышать, это можно сказать про СЕ, про ИКСБТ, пхпклуб и др. большие форумы.
в то же время на этом форуме и на пхпклубе толчется толпа ньюбов и чего-то пытается читать между строк у зубров, которые их унижают и гнобят. Мазохисты что ли? Спрашивается: какого черта вы там толчетесь? Форум же хреновый!!! идите на другой форум, например, на софттайм! вам там помогут... написать совершенно идиотский код.
TomCAt.nl, если он один раз в коде сделал так:
#а потом использует перменную $count
$counter=0;
for($i=0; $i<$count; $i++)
то в следующий раз в коде надо сделать было точно так же, а не так:
for ($i=0; $i<count($result); $i++)
{
потому что на каждой итерации цикла вызывается функция и придется только уповать на то, что интерпретатор каким-то чудесным образом вместо того, чтобы вызывать функцию, где-то закеширует то, что она возвращает. И с массивами надо разобраться, подумать, можно ли обойтись без второго вложенного цикла либо без циклов вообще, навскидку, думаю, что можно.
Код малость сыроват, сварганил за час:)
TomCAt.nl - курить мануалы. До посинения...
Такой код пишется вместе с отладкой минут за 5-7 несколькими функциями:
Эта удаляет теги - strip_tags:
http://phpclub.ru/manrus/f/strip-tags.html
Эта разрезает - explode:
http://phpclub.ru/manrus/f/explode.html
Эта считает - array_count_values:
http://phpclub.ru/manrus/f/array-count-values.html
Перед разрезанием все спецсимволы заменить на пробелы, затем все включения, где больше одного пробела или стоит перевод каретки заменить на один пробел. Потом по пробелу разделить на слова.
А СКОРПИОН не удержался и все же без намеков привел ссылки на ман :)
про код молчу, работать будет, но написан полубред.
Согласен всецело, код мне еще вчера не сильно понравился:), но очень уж хотелось помочь человеку.
За здоровую критику, спасибо, не обижаюсь, сам все знаю:)
Вот попытался исправить, благодаря советам Скорпиона, пишем после регулярки:
//Ищем самое часто встречаемое слово и заносим в массив $result
$result=array_count_values($out[0]);
//ищем максимум в массиве $result
$max_num=0;
$word="";
foreach($result as $key=>$value)
{
if($value>$max_num)
{
$max_num=$value;
$word=$key;
}
}
echo "Слово <b>".$word."</b> встретилос чаще всех <b>".$max_num."</b> раз";
Вопрос к Скорпиону: чем плоха регулярка? Она конечно, нагружает сервак, но зато можно более просто проконтролировать длину слова, а то он будет считать любой предлог словом