Создавая свой php движок для нового сайта, я, как и всегда не захотел выполнять нудную работу сам и поэтому такое задание как подбор ключевых слов к каждой странице сайта доверил php скрипту, который написал меньше чем за полчаса.
Конечно, многие могут сказать, что поисковики не учитывают мета теги keywords и description, и вовсе незачем голову морочить проблемой подбора ключевых слов, но учитывают или нет, это известно только администраторам поисковых машин. В частности, я недавно проводил эксперимент, в котором участвовало три пары сайтов, на каждой паре сайтов был один и тот же контент, но на одном из сайтов каждой пары были прописаны keywords и description. И что вы думаете, через месяц, все три сайта с keywords и description были выше в выдаче Яндекса, чем их двойники без этих мета тегов. (Примечание: сайты были оптимизированы под абсолютно не конкурентные запросы и не имели бэклинков).
Принцип работы php скрипта, основной задачей которого является “на лету” подбирать к тексту ключевые слова (keywords), заключается в разделении всего текста на слова и занесение их в массив. Из исходного текста сначала удаляются все знаки препинания, затем слова помещаются в массив и каждому слову присваивается число его повторений в тексте. После заполнения массива слова упорядочиваются по количеству повторений, и в качестве результатов берется верхушка массива – 15-25 самых часто употребляемых слов.
А вот и сам исходный код этого php-скрипта для подбора ключевых слов:
PHP - Код
class  ; Counter
{
  ;  ;  ;  ;var  ; $origin_arr ;
  ;  ;  ;  ;var  ; $modif_arr ;
  ;  ;  ;  ;var  ; $min_word_length  ; =  ; 3 ;
  ;
function  ; explode_str_on_words ( $text )
{
  ;  ;  ;  ; $search  ; =  ;array  ;( "'ё'" ,
  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ; "'<script[^>]*.*?</script>'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 (& #092;\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. Вот наглядный пример использования этого класса:
PHP - Код
$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 архиве вы можете
здесь .
Разместил: admin | | Прочитано: 97186 | |