Универсальное склонение слов на PHP с использованием Яндекс.API

Пример простейшей функции, которая возвращает слово в нужном склонении


function inflect($what,$inflection_id)
{
   // Функция склонения названий, имен и любой другой фигни
   // Суть функции - ищем слово с нужной формой склонения в базе.
   // Если не нашли - дергаем склонятор Яндекса и кешируем в базу ответ.
   GLOBAL $mysql;
   $inflected="";

   $res_inflected=$mysql->query_to_array("select * from set_of_inflections where `original`='".$what."' and inflection_id='".$inflection_id."' limit 1");
   if(!empty($res_inflected))
   {
     $inflected=$res_inflected['inflected'];
   }
   else
   {

    $parser=xml_parser_create();

$data=@file_get_contents('http://export.yandex.ru/inflect.xml?name='.urlencode($what));
// print_r($data);
    if($data){
     xml_parse_into_struct($parser,$data,$structure,$index);
     if($structure){
// print_r($structure);
     foreach($structure as $key)
        {
          if(!isset($key['tag']) || !isset($key['value']))continue;
          elseif($key['tag']=='INFLECTION')
          {
            $inf[$what][$key['attributes']['CASE']]=$key['value'];
            $res_inflected=$mysql->query_to_array("insert into set_of_inflections (`original`, `inflection_id`, `inflected`)
            values ('".$what."',".$key['attributes']['CASE'].",'".$key['value']."')");
            if($key['attributes']['CASE']==$inflection_id)
            {
               $inflected=$key['value'];
            }
          }
        }
         }
    }
    xml_parser_free($parser);
   }
   if($inflected=="") $inflected=$what;
   return $inflected;
}

(c)Илья Артеменко (goblin)

C недавних пор Яндекс удалил описание Яндекс.Склонятора. Сервис продолжает работать.

В настоящее время яндекс-склонятор не работает! Используйте Функция склонения слов на основе phpMorphy или API склонения слов.

Пример пакетного склонения

Для всех строк в файле file.txt запрашиваются все словоформы и выводятся на экран. Не используйте этот пример повторно, обязательно сохраняйте все в базу, иначе получите бан от яндекса.

header('Content-Type: text/html ; charset="utf-8"');
$file = file_get_contents('file.txt');
$file = explode(chr(10), $file);
$delim = '|';

foreach ($file as $k => $v) {
    $url = "http://export.yandex.ru/inflect.xml?name=$v";
    $xml = simplexml_load_file($url);
    $original = $xml->original;
    $im = trim($xml->inflection[0]);
    $rod = trim($xml->inflection[1]);
    $dat = trim($xml->inflection[2]);
    $vin = trim($xml->inflection[3]);
    $tvor = trim($xml->inflection[4]);
    $predl = trim($xml->inflection[5]);

    echo $im.$delim.$rod.$delim.$dat.$delim.$vin.$delim.$tvor.$delim.$predl.chr(10);
    echo '<br />';
}

(с)Сейшельский - seosey.ru

Смотрите также склонятор с учетом морфологии русского языка


.