Некоторое время назад, когда я еще хуже разбирался в SEO-технологиях, подбор ключевых слов для текста я остуществлял не на основе популярных (или наоборот редких) запросов Яндекса и Google, а банальным пересчетом повторяющихся слов в тексте. Первое время делал это вручную. Потом мне надоело, и я написал скрипт подсчета количества повторяющихся слов в тексте с использованием всем известного сервиса "Яндекс.Склонятор".
Публикую код, как есть. Может кому-то он пригодится и Вы сможете дальше развить его.
<?php
echo "Для получения списка ключевых слов вставьте текст в поле ниже и нажмите кнопку...";
echo "<form target=\"_self\" href=\"index.php\" method=\"post\">
<input type=\"hidden\" name=\"option\" value=\"com_content\">
<input type=\"hidden\" name=\"view\" value=\"article\">
<input type=\"hidden\" name=\"id\" value=\"52\">
<TEXTAREA name=\"word\" rows=15 cols=70>".htmlspecialchars(trim($_REQUEST['word']),ENT_QUOTES)."</TEXTAREA><p>";
if (array_key_exists("pvt", $_REQUEST) && ctype_digit($_POST['pvt'])) $pvt = $_POST['pvt'];
else $pvt = 2;
echo "Минимальное количество повторений слова: <input type=text name=\"pvt\" value=".$pvt."><p>
<input type=\"submit\" value=\"Получить\"></form><p>";
$stopar = array ("a","about","after","all","also","an","and","any","are","aren't","am","as","at","b","because","been","before","but","be","by","c","can","can't","could","couldn't","d","did","didn't","do","does","doesn't","don't","each","even","e","f","for","from","fax","h","had","hadn't","has","hasn't","have","haven't","he'll","he's","her","him","his","how","he","i","i'll","i'm","its","i've","if","into","isn't","it's","in","is","j","just","l","like","m","made","man","many","may","me","most","mr","much","must","my","mail","e-mail","mb","kb","n","new","not","now","o","of","on","only","or","other","our","out","over","off","p","pdf","s","she","she'll","she's","should","shouldn't","some","such","t","than","that","the","their","them","then","there","these","they","they're","they've","this","those","through","too","to","w","was","wasn't","way","we","well","we're","were","we've","what","when","where","which","who","with","won't","would","wouldn't","www","will","u","up","y","you","you're","you've","your","а","ао","аозт","б","без","безо","будто","буду","бы","был","быть","было","были","будут","будет","была","более","в","ввиду","вдруг","ведь","весь","взамен","вкратце","вкупе","вместо","вновь","во","возле","вопреки","вот","впредь","вроде","врозь","вряд","все","вслед","вследствие","всюду","всякий","вас","вам","вы","всего","где","гораздо","г","год","года","году","да","дабы","давать","даже","далее","дан","дать","для","до","должно","должный","др","другой","д","его","едва","ее","ей","ему","если","есть","ещё","еще","ею","ж","же","за","затем","зато","зачем","здесь","знать","и","из","или","им","именно","иметь","ими","иначе","иной","итак","итого","их","к","каждый","как","какой","ко","кой","когда","кое","который","кроме","кто","куда","ли","либо","лишь","ль","любой","любая","любые","мало","мимо","мочь","можно","мы","мб","кб","много","многий","многим","многие","на","надо","напр","наряду","насчет","начать","наш","не","него","ней","некто","нельзя","нем","немало","немного","немалый","немногое","нет","нечего","ни","нибудь","нигде","никак","никакой","никогда","никто","никуда","ним","ниоткуда","нисколько","них","ничего","ничей","ничто","ничуть","но","о","об","оба","обе","обо","однако","около","он","она","они","оно","опять","от","откуда","отнюдь","ото","отсюда","оттого","отчего","очень","обл","оао","зао","ооо","оф","офис","обл","по","подле","подчас","поз","позднее","позже","пока","полно","помимо","поначалу","понемногу","поскольку","после","потом","потому","почему","почти","поэтому","пр","пред","предо","прежде","прежний","при","притом","причем","про","путем","ради","раз","разве","разом","ранее","с","сам","самый","сверх","свое","свои","свой","себя","сколь","см","смочь","снова","со","собой","совсем","сразу","среди","столь","столько","та","так","также","такой","там","тем","то","тогда","того","тоже","только","том","тот","тут","у","ул","уже","факс","хотеть","хоть","хотя","чего","чей","чем","чему","через","что","чтоб","чтобы","чуть","ч","эта","этак","этакий","эти","это","этот","этого","этом","этому");
$kw=preg_replace("#\s*[^A-Za-z0-9А-Яа-я]+\s*#siu"," ",trim($_REQUEST['word']));
if($kw!=""){
$kwar = array();
$cntar = array();
$matches = array();
$ps=explode(" ",$kw);//преобразую строку с пробелами в массив
echo "<div style=\"display: none;\">";
print_r($ps);
echo "</div>";
for($i=0;$i<(count($ps));$i++){
if((strlen($ps[$i])>4) && (array_search($ps[$i],$stopar) === false)){
$cnt=1;//пока 1 развстретилось
echo "<div style=\"display: none;\">";
$so=fsockopen('export.yandex.ru',80,$errno,$errstr,30);// открыли соединение
// послали GET форму (простой URL + указание вирт. хоста)
fputs($so,'GET /inflect.xml?name='.$ps[$i].' HTTP/1.0'."\n".'HOST: export.yandex.ru'."\n\n");
// читаем все, пока не наступит "конец заголовка" (тоесть, начало документа)
// если наступит, то со след. байта начнется документ
while(fgets($so,2048)!="\r\n" &&!feof($so));
unset($buf);
while(!feof($so)) { $buf.=fread($so,2048); }// читаем документ в переменную
// Готово. В переменной $buf храниться скаченный документ (тоесть, файл)
// Максимум можно читать порциями по 64K-1байт
fclose($so);// закрываем сокет
// $url = 'http://export.yandex.ru/inflect.xml?name='.$ps[$i];
$matches = array_pad ($matches, 1, 0); //уменьшаю массив до 1 значения
if (preg_match_all("#<inflection case=\"[0-9]+\">[^\<\/]+(.*)</inflection>#", $buf, $matches, PREG_PATTERN_ORDER) > 0)
for($k=0;$k<(count($matches));$k++){
$matches[$k] = preg_replace("/<.+?>/", "",$matches[$k]);
}
print_r($matches[0]);
echo " - ".count($matches[0])." значений";
echo "</div>";
for($j=0;($j<count($ps));$j++){
for($k=0;$k<(count($matches[0]));$k++){
if(mb_convert_case($matches[0][$k],MB_CASE_LOWER,"UTF-8")==mb_convert_case($ps[$j],MB_CASE_LOWER,"UTF-8")){
if ($i != $j) {
echo "<div style=\"display: none;\">[";
echo mb_convert_case($matches[0][$k],MB_CASE_LOWER,"UTF-8")."=".mb_convert_case($ps[$j],MB_CASE_LOWER,"UTF-8")."\n";
echo "]</div>";
$cnt++;
$ps[$j]="";
}
}
}
}
array_push($kwar,mb_convert_case($ps[$i],MB_CASE_LOWER,"UTF-8"));
array_push($cntar,$cnt);
}
}
$kw = "";
for($i=0;$i<(count($kwar));$i++){
if ($cntar[$i] >= $pvt) {
$kw = $kw.$kwar[$i]." ";
}
}
if (strlen($kw) > 0) $kw = substr($kw,0,strlen($kw)-1);
echo"<b>Ключевые слова:</b><p><TEXTAREA name=\"kw\" rows=15 cols=70>".$kw."</TEXTAREA>";
}
?>
echo "Для получения списка ключевых слов вставьте текст в поле ниже и нажмите кнопку...";
echo "<form target=\"_self\" href=\"index.php\" method=\"post\">
<input type=\"hidden\" name=\"option\" value=\"com_content\">
<input type=\"hidden\" name=\"view\" value=\"article\">
<input type=\"hidden\" name=\"id\" value=\"52\">
<TEXTAREA name=\"word\" rows=15 cols=70>".htmlspecialchars(trim($_REQUEST['word']),ENT_QUOTES)."</TEXTAREA><p>";
if (array_key_exists("pvt", $_REQUEST) && ctype_digit($_POST['pvt'])) $pvt = $_POST['pvt'];
else $pvt = 2;
echo "Минимальное количество повторений слова: <input type=text name=\"pvt\" value=".$pvt."><p>
<input type=\"submit\" value=\"Получить\"></form><p>";
$stopar = array ("a","about","after","all","also","an","and","any","are","aren't","am","as","at","b","because","been","before","but","be","by","c","can","can't","could","couldn't","d","did","didn't","do","does","doesn't","don't","each","even","e","f","for","from","fax","h","had","hadn't","has","hasn't","have","haven't","he'll","he's","her","him","his","how","he","i","i'll","i'm","its","i've","if","into","isn't","it's","in","is","j","just","l","like","m","made","man","many","may","me","most","mr","much","must","my","mail","e-mail","mb","kb","n","new","not","now","o","of","on","only","or","other","our","out","over","off","p","pdf","s","she","she'll","she's","should","shouldn't","some","such","t","than","that","the","their","them","then","there","these","they","they're","they've","this","those","through","too","to","w","was","wasn't","way","we","well","we're","were","we've","what","when","where","which","who","with","won't","would","wouldn't","www","will","u","up","y","you","you're","you've","your","а","ао","аозт","б","без","безо","будто","буду","бы","был","быть","было","были","будут","будет","была","более","в","ввиду","вдруг","ведь","весь","взамен","вкратце","вкупе","вместо","вновь","во","возле","вопреки","вот","впредь","вроде","врозь","вряд","все","вслед","вследствие","всюду","всякий","вас","вам","вы","всего","где","гораздо","г","год","года","году","да","дабы","давать","даже","далее","дан","дать","для","до","должно","должный","др","другой","д","его","едва","ее","ей","ему","если","есть","ещё","еще","ею","ж","же","за","затем","зато","зачем","здесь","знать","и","из","или","им","именно","иметь","ими","иначе","иной","итак","итого","их","к","каждый","как","какой","ко","кой","когда","кое","который","кроме","кто","куда","ли","либо","лишь","ль","любой","любая","любые","мало","мимо","мочь","можно","мы","мб","кб","много","многий","многим","многие","на","надо","напр","наряду","насчет","начать","наш","не","него","ней","некто","нельзя","нем","немало","немного","немалый","немногое","нет","нечего","ни","нибудь","нигде","никак","никакой","никогда","никто","никуда","ним","ниоткуда","нисколько","них","ничего","ничей","ничто","ничуть","но","о","об","оба","обе","обо","однако","около","он","она","они","оно","опять","от","откуда","отнюдь","ото","отсюда","оттого","отчего","очень","обл","оао","зао","ооо","оф","офис","обл","по","подле","подчас","поз","позднее","позже","пока","полно","помимо","поначалу","понемногу","поскольку","после","потом","потому","почему","почти","поэтому","пр","пред","предо","прежде","прежний","при","притом","причем","про","путем","ради","раз","разве","разом","ранее","с","сам","самый","сверх","свое","свои","свой","себя","сколь","см","смочь","снова","со","собой","совсем","сразу","среди","столь","столько","та","так","также","такой","там","тем","то","тогда","того","тоже","только","том","тот","тут","у","ул","уже","факс","хотеть","хоть","хотя","чего","чей","чем","чему","через","что","чтоб","чтобы","чуть","ч","эта","этак","этакий","эти","это","этот","этого","этом","этому");
$kw=preg_replace("#\s*[^A-Za-z0-9А-Яа-я]+\s*#siu"," ",trim($_REQUEST['word']));
if($kw!=""){
$kwar = array();
$cntar = array();
$matches = array();
$ps=explode(" ",$kw);//преобразую строку с пробелами в массив
echo "<div style=\"display: none;\">";
print_r($ps);
echo "</div>";
for($i=0;$i<(count($ps));$i++){
if((strlen($ps[$i])>4) && (array_search($ps[$i],$stopar) === false)){
$cnt=1;//пока 1 развстретилось
echo "<div style=\"display: none;\">";
$so=fsockopen('export.yandex.ru',80,$errno,$errstr,30);// открыли соединение
// послали GET форму (простой URL + указание вирт. хоста)
fputs($so,'GET /inflect.xml?name='.$ps[$i].' HTTP/1.0'."\n".'HOST: export.yandex.ru'."\n\n");
// читаем все, пока не наступит "конец заголовка" (тоесть, начало документа)
// если наступит, то со след. байта начнется документ
while(fgets($so,2048)!="\r\n" &&!feof($so));
unset($buf);
while(!feof($so)) { $buf.=fread($so,2048); }// читаем документ в переменную
// Готово. В переменной $buf храниться скаченный документ (тоесть, файл)
// Максимум можно читать порциями по 64K-1байт
fclose($so);// закрываем сокет
// $url = 'http://export.yandex.ru/inflect.xml?name='.$ps[$i];
$matches = array_pad ($matches, 1, 0); //уменьшаю массив до 1 значения
if (preg_match_all("#<inflection case=\"[0-9]+\">[^\<\/]+(.*)</inflection>#", $buf, $matches, PREG_PATTERN_ORDER) > 0)
for($k=0;$k<(count($matches));$k++){
$matches[$k] = preg_replace("/<.+?>/", "",$matches[$k]);
}
print_r($matches[0]);
echo " - ".count($matches[0])." значений";
echo "</div>";
for($j=0;($j<count($ps));$j++){
for($k=0;$k<(count($matches[0]));$k++){
if(mb_convert_case($matches[0][$k],MB_CASE_LOWER,"UTF-8")==mb_convert_case($ps[$j],MB_CASE_LOWER,"UTF-8")){
if ($i != $j) {
echo "<div style=\"display: none;\">[";
echo mb_convert_case($matches[0][$k],MB_CASE_LOWER,"UTF-8")."=".mb_convert_case($ps[$j],MB_CASE_LOWER,"UTF-8")."\n";
echo "]</div>";
$cnt++;
$ps[$j]="";
}
}
}
}
array_push($kwar,mb_convert_case($ps[$i],MB_CASE_LOWER,"UTF-8"));
array_push($cntar,$cnt);
}
}
$kw = "";
for($i=0;$i<(count($kwar));$i++){
if ($cntar[$i] >= $pvt) {
$kw = $kw.$kwar[$i]." ";
}
}
if (strlen($kw) > 0) $kw = substr($kw,0,strlen($kw)-1);
echo"<b>Ключевые слова:</b><p><TEXTAREA name=\"kw\" rows=15 cols=70>".$kw."</TEXTAREA>";
}
?>