Квартиры, дома, земельные участки Краснодарского края без посредников. Объявления собственников недвижимости.
Реклама здесь
Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

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

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


<?php
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)

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

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


<?php
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

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

© Copyright 2008-2012 by KDG