Используем phpmorphy
Скачиваем библиотеку и словари http://phpmorphy.sourceforge.net/dokuwiki/download
Читаем документацию http://phpmorphy.sourceforge.net/dokuwiki/manual
$path = '<путь до директории с библиотекой>';
require_once($path . '/src/common.php');
//словари
$dir = $path . '/dicts';
$lang = 'ru_RU';
$opts = array(
'storage' => PHPMORPHY_STORAGE_FILE,
);
try {
$morphy = new phpMorphy($dir, $lang, $opts);
} catch(phpMorphy_Exception $e) {
die('Error occured while creating phpMorphy instance: ' . $e->getMessage());
}
$paradigms = $morphy->findWord('КРАСНОДАР');
$paradigms->getByPartOfSpeech('С'); // только существительные
foreach ($paradigms as $paradigm) {
foreach($paradigm as $form) {
// только в родительском падеже и единственном числе (подробнее опции http://phpmorphy.sourceforge.net/dokuwiki/manual-graminfo)
if(!$form->hasGrammems('РД') || !$form->hasGrammems('ЕД'))
continue;
print $form->getWord(); // КРАСНОДАРА
}
}