<?
function
changename
($changename=
'ПупкинВасилий',
$gender=1,
$case=1){
//Разделяем
данныенафамилию
иимя
$partname=
$changename);
//Еслипадежне
именительный,
начинаемработу
if($case>1){
//Получаем
фамилиюиимя
$sn=$partname
['0'];
$n=$partname
['1'];
//Получаемдлину
фамилиииимени
(кол-во
символов)
$lsn=utf_strlen
($sn);
$ln=utf_strlen
($n);
//Получаемдлину
фамилиииимени
допредпоследней
буквы(кол-во
символов)
$m1sn=$lsn-1;
$m1n=$ln-1;
$m2n=$ln-2;
//Выводим
последниесимволы
(окончания)для
дальнейшего
сравненияс
окончаниямив
массиве
$e1sn=
utf_substr($sn,
$m1sn,1);
$e1n=utf_substr
($n,$m1n,1);
$e2n=utf_substr
($n,$m2n,2);
//Получаем
фамилиюиимябез
последних
символов
$n1esn=
utf_substr($sn,
0,$m1sn);
$n1en=
utf_substr($n,0,
$m1n);
$n2en=
utf_substr($n,0,
$m2n);
//Работас
мужскойфамилией
иименем
if($gender==1)
{
//Массив
окончаниймужских
фамилий
('о','х')
);
//Замена
окончанийфамилии
взависимостиот
падежа
$snlc=($case==
2)?'а':($case
==3)?'у':'';
//Замена
окончанийфамилий
взависимостиот
падежа
($e1sn,$mesn
['1'])){
$surname=$sn;
}else{
$surname=$sn.
$snlc;
}
//Массив
окочаниймужских
имен
('ва','ма'),
('ек'),
('ел'),
('н','р','в',
'с','м','л',
'д'),
('й','ь'),
('я','а')
);
//Работас
заменойокончаний
мужскихименв
зависимостиот
падежа
if($name=
$men['1'])){
$nlc=($case==
2)?'ы':($case
==3)?'е':'';
$name=$n1en.
$nlc;
}elseif
$men['2'])){
$nlc=($case==
2)?'ька':
($case==3)?
'ьку':'';
$name=$n2en.
$nlc;
($e2n,$men
['3'])){
$nlc=($case==
2)?'ла':
($case==3)?
'лу':'';
$name=$n2en.
$nlc;
($e1n,$men
['4'])){
$nlc=($case==
2)?'а':($case
==3)?'у':'';
$name=$n.
$nlc;
}elseif
$men['5'])){
$nlc=($case==
2)?'я':($case
==3)?'ю':'';
$name=$n1en.
$nlc;
}elseif
$men['6'])){
$nlc=($case==
2)?'и':($case
==3)?'е':'';
$name=$n1en.
$nlc;
}else{
$name=$n;
}
//Работас
женскойфамилией
иименем
}elseif($gender
==2){
//Массив
окончанийженских
фамилий
('о','х')
);
//Замена
окончанийфамилий
взависимостиот
падежа
($e1sn,$wesn
['1'])){
$surname=$sn;
}else{
$surname=
$n1esn.'ой';
}
//Массив
окончанийженских
имен
('ша','тя',
'ня','ка',
'ля'),
('ра','та',
'да','ма',
'на')
);
//Работас
заменойокончаний
женскихименв
зависимостиот
падежа
if($name=
$wen['1'])){
$wlc=($case==
2)?'и':($case
==3)?'е':'';
$name=$n1en.
$wlc;
}elseif
$wen['2'])){
$wlc=($case==
2)?'ы':($case
==3)?'е':'';
$name=$n1en.
$wlc;
}else{
$name=$n;
}
//Есликакимто
образомполне
определенто
ничегонеменяем
}else{
$surname=$sn;
$name=$n;
}
//Соединяем
измененные
фамилиюиимя
$fullname=
$surname.''.
$name;
//Еслипадеж
именительныйто
ничегоне
изменяем
}else{
$fullname=
$changename;
}
//
return$fullname;
}
Параметрыиих
значения
Первыйпараметр-
фамилияиимяв
именительном
падеже(если
правилонебудет
соблюдено
возможна
некорректное
склонение).
Второй-пол
пользователя,
где:
1-мужской
2-женский
Третий-падеж
склонения,где:
1-именительный
(кто,что)
2-родительный
(кого,чего)
3-дательный
(кому,чему)
Вызываяфункциюи
ПРАВИЛЬНОуказав
всепараметрывы
получитефамилию
иимясклоненные
повыбранному
вамипадежу
Вызовирезультат
<?=changename
('ПупкинВася',
1,3)?>