Nikita
Освоившийся
Дата регистрации:
06.06.2012 22:12:07
Сообщений: 36
есть таблица
id - id пользователя
name - Имя пользователя
surname - Фамилия пользователя
есть пользователь
id - 1
name - Вася
surname - Петров
как сделать так, что бы при выводе было написано - отправить сообщение Васи Петрову, а не отправить сообщение Вася Петров?
какие есть функции, может кто подскажет как реализовать это?
ilyadenisovid
Мастер
Дата регистрации:
28.01.2013 18:32:29
Сообщений: 213
Посмотри скрипт склонение имен: http://agalkin.ru/js/russian-name.php
Nikita
Освоившийся
Дата регистрации:
06.06.2012 22:12:07
Сообщений: 36
КАК ЕГО ПРИМЕНИТЬ К PHP MYSQL?
ilyadenisovid
Мастер
Дата регистрации:
28.01.2013 18:32:29
Сообщений: 213
Там должна быть инструкция или что-то вроде того
Nikita
Освоившийся
Дата регистрации:
06.06.2012 22:12:07
Сообщений: 36
Там нету инструкции! может кто-то ещё что-то знает?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Его нужно переписать на PHP и MySQL, либо найти аналогичный уже написанный.
ilyadenisovid
Мастер
Дата регистрации:
28.01.2013 18:32:29
Сообщений: 213
там написано , все вопросы на e-mail, на той странице
kuller
Продвинутый
Дата регистрации:
28.02.2012 15:16:04
Сообщений: 51
Иногда полезно пользоватся поиском гугла, яндекса. Можно быстрей решить вопрос чем ждать ответа. Данную функцию нашол через гугл, менше минуты потратил.
Функция склонения имен.
<?
function changename($changename = 'Пупкин Василий', $gender = 1, $case = 1) {
// Разделяем данные на фамилию и имя
$partname = explode(' ', $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) {
// Массив окончаний мужских фамилий
$mesn = array(
'1' => array( 'о', 'х')
);
// Замена окончаний фамилии в зависимости от падежа
$snlc = ($case == 2) ? 'а' : ($case == 3) ? 'у' : '';
// Замена окончаний фамилий в зависимости от падежа
if (in_array($e1sn, $mesn['1'])) {
$surname = $sn;
} else {
$surname = $sn . $snlc;
}
// Массив окочаний мужских имен
$men = array(
'1' => array( 'ва', 'ма' ),
'2' => array( 'ек'),
'3' => array('ел'),
'4' => array( 'н', 'р', 'в', 'с', 'м', 'л', 'д' ),
'5' => array( 'й', 'ь' ),
'6' => array( 'я', 'а' )
);
// Работа с заменой окончаний мужских имен в зависимости от падежа
if ($name = in_array($e2n, $men['1'])) {
$nlc = ($case == 2) ? 'ы' : ($case == 3) ? 'е' : '';
$name = $n1en . $nlc;
} elseif (in_array($e2n, $men['2'])) {
$nlc = ($case == 2) ? 'ька' : ($case == 3) ? 'ьку' : '';
$name = $n2en . $nlc;
} elseif(in_array($e2n, $men['3'])) {
$nlc = ($case == 2) ? 'ла' : ($case == 3) ? 'лу' : '';
$name = $n2en . $nlc;
} elseif(in_array($e1n, $men['4'])) {
$nlc = ($case == 2) ? 'а' : ($case == 3) ? 'у' : '';
$name = $n . $nlc;
} elseif (in_array($e1n, $men['5'])) {
$nlc = ($case == 2) ? 'я' : ($case == 3) ? 'ю' : '';
$name = $n1en . $nlc;
} elseif (in_array($e1n, $men['6'])) {
$nlc = ($case == 2) ? 'и' : ($case == 3) ? 'е' : '';
$name = $n1en . $nlc;
} else {
$name = $n;
}
// Работа с женской фамилией и именем
} elseif ($gender == 2) {
// Массив окончаний женских фамилий
$wesn = array(
'1' => array( 'о', 'х')
);
// Замена окончаний фамилий в зависимости от падежа
if (in_array($e1sn, $wesn['1'])) {
$surname = $sn;
} else {
$surname = $n1esn . 'ой';
}
// Массив окончаний женских имен
$wen = array(
'1' => array( 'ша', 'тя', 'ня', 'ка', 'ля' ),
'2' => array( 'ра', 'та', 'да', 'ма', 'на' )
);
// Работа с заменой окончаний женских имен в зависимости от падежа
if ($name = in_array($e2n, $wen['1'])) {
$wlc = ($case == 2) ? 'и' : ($case == 3) ? 'е' : '';
$name = $n1en . $wlc;
} elseif (in_array($e2n, $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;
}
вызов
changename('Пупкин Вася', 1, 3)