Склонение слов по падежам на php

Склонение слов по падежам на phpУ Яндекса есть очень удобный api сервис, который может трансформировать любое слово, или даже несколько слов, во все падежи. Воспользоваться сервисом очень просто, достаточно сделать запрос по адресу export.yandex.ru/inflect.xml?name=СЛОВО — в ответ будет получен xml со всеми склонениями слова.
Ниже я привел функцию, которая работает с api Яндекса и возвращает нужную форму слова.

Код функции:

/**
* Склонение слов по падежам. С использованием api Яндекса
* @var string $text - текст 
* @var integer $numForm - нужный падеж. Число от 0 до 5
*
* @return - вернет false при неудаче. При успехе вернет нужную форму слова
*/
function getNewFormText($text, $numForm){
    $urlXml = "http://export.yandex.ru/inflect.xml?name=".urlencode($text);
    $result = @simplexml_load_file($urlXml);
    if($result){
        $arrData = array();
        foreach ($result->inflection as $one) {
           $arrData[] = (string) $one;
        }
        return $arrData[$numForm];
    }
    return false;
}

И пример использования функции:

$text = "любой текст";
echo "Именительный падеж : " . getNewFormText($text, 0) . "<br/>";
echo "Родительный падеж : " . getNewFormText($text, 1) . "<br/>";
echo "Дательный падеж : " . getNewFormText($text, 2) . "<br/>";
echo "Винительный падеж : " . getNewFormText($text, 3) . "<br/>";
echo "Творительный падеж : " . getNewFormText($text, 4) . "<br/>";
echo "Предложный падеж : " . getNewFormText($text, 5) . "<br/>";
Рассказать друзьям:


Склонение слов по падежам на php: 4 комментария

  1. Автор, подобные примеры надо смывать в унитаз! Сам то думал, что за пример показал и новички его ведь будут использовать?

    У тебя скрипт делает 6 (ШЕСТЬ) запросов к серверу яндекса, при этом каждый раз яндекс отдаст ВСЕ падежи… представь сколько времени будет генерироваться страница?
    Возвращать нужно одним массивом из функции и уже в основном скрипте брать с массива нужное.
    Вот не менее функциональный вариант, но с 1 запросом и 1 проходом цикла в отличии от твоих шести.

    function getNewFormText($text){
    $urlXml = «http://export.yandex.ru/inflect.xml?name=».urlencode($text);
    $result = @simplexml_load_file($urlXml);
    if($result){
    $arrData = array();
    foreach ($result->inflection as $one) {
    $arrData[] = (string) $one;
    }
    return $arrData;
    }
    return false;
    }

    ——
    // Основной скрипт. Видим что запрос к функции только один
    // Здесь было бы разумно сделать проверку на размер массива «$text», вдруг яндекс ничего не вернул, тогда код ниже вызовет нотайсы и соответственно ничего не будет склонять
    if(($text = getNewFormText($text)) !== false)
    {
    echo «Именительный падеж : » . $text[0]. «»;
    echo «Родительный падеж : » . $text[1] . «»;
    echo «Дательный падеж : » . $text[2]. «»;
    echo «Винительный падеж : » .$text[3] . «»;
    echo «Творительный падеж : » .$text[4]. «»;
    echo «Предложный падеж : » . $text[5]. «»;
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*