Создавая новый php движок для своего сайта bodybilding.info, я, как и всегда не захотел выполнять нудную работу сам и поэтому такое ответственное задание как подбор ключевых слов к каждой странице сайта доверил php скрипту, который написал меньше чем за полчаса. Кстати, о подборе ключевых слов я уже писал раньше, но там все было реализовано совсем не так как здесь. Конечно, многие могут возразить, что поисковики не учитывают мета теги keywords и description, и незачем голову морочить проблемой подбора ключевых слов, но учитывают или нет, это известно только администрации поисковых машин. В частности, я недавно проводил эксперимент, в котором участвовало три пары сайтов, на каждой паре сайтов был один и тот же контент, но на одном из сайтов каждой пары были прописаны keywords и description. И что вы думаете, через месяц, все три сайта с keywords и description были выше в выдаче Яндекса, чем их клоны без этих мета тегов. (Примечание: сайты были оптимизированы под абсолютно не конкурентные запросы и не имели бэклинков).
Принцип работы php скрипта, основной задачей которого является “на лету” подбирать к тексту ключевые слова (keywords), заключается в разбиении всего текста на слова и занесение их в массив. Из исходного текста сначала удаляются все знаки препинания, затем слова заносятся в массив и каждому слову присваивается число его повторений в тексте. После заполнения массива слова сортируются по количеству повторений, и в качестве результатов берется верхушка массива – 15-25 самых часто употребляемых слов.
А вот и исходный код этого php скрипта для подбора ключевых слов: class Counter { var $origin_arr; var $modif_arr; var $min_word_length = 3; function explode_str_on_words($text) { $search = array ("'ё'", "']*?>.*?'si", // Вырезается javascript "''si", // Вырезаются html-тэги "'([\r\n])[\s]+'", // Вырезается пустое пространство "'&(quot|#34);'i", // Замещаются html-элементы "'&(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)"); $text = preg_replace ($search, $replace, $text); $del_symbols = array(",", ".", ";", ":", "\"", "#", "\$", "%", "^", "!", "@", "`", "~", "*", "-", "=", "+", "\\", "|", "/", ">", "<", "(", ")", "&", "?", "¹", "\t", "\r", "\n", "{","}","[","]", "'", "“", "”", "•", "как", "для", "что", "или", "это", "этих", "всех", "вас", "они", "оно", "еще", "когда", "где", "эта", "лишь", "уже", "вам", "нет", "если", "надо", "все", "так", "его", "чем", "при", "даже", "мне", "есть", "раз", "два", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ); $text = str_replace($del_symbols, array(" "), $text); $text = ereg_replace("( +)", " ", $text); $this->origin_arr = explode(" ", trim($text)); return $this->origin_arr; } function count_words() { $tmp_arr = array(); foreach ($this->origin_arr as $val) { if (strlen($val)>=$this->min_word_length) { $val = strtolower($val); if (array_key_exists($val, $tmp_arr)) { $tmp_arr[$val]++; } else { $tmp_arr[$val] = 1; } } } arsort ($tmp_arr); $this->modif_arr = $tmp_arr; } function get_keywords($text) { $this->explode_str_on_words($text); $this->count_words(); $arr = array_slice($this->modif_arr, 0, 30); $str = ""; foreach ($arr as $key=>$val) { $str .= $key . ", "; } return trim(substr($str, 0, strlen($str)-2)); } } ?>
Пользоваться данным php классом очень просто, создаете экземпляр класса функцией new а потом вызываете внутреннюю функцию get_keywords(), класса Counter. Вот пример использования этого класса: $word_counter = new Counter(); if (strlen($content)>50000) { $keywords = $word_counter->get_keywords(substr($content, 0, 50000)); } else { $keywords = $word_counter->get_keywords($content); }
В переменной $content должен содержатся основной текст страницы, для которой создаются ключевые слова. И еще, полученная строка содержит только ключевые слова, без мета тегов. Скачать данный php класс для подбора ключевых слов в zip архиве вы можете здесь |