универсальное сколонение слов на 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;
}
?>
Комментарии:
Нету комментариев для вывода...