Перейти к содержанию
cmd

PHP: города в предложном падеже

Рекомендуемые сообщения

Просто оставлю тут:

 

Киев -> в Киеве

Пермь -> в Перми

Москва -> в Москве

Питер -> в Питере

function to_prepositional($str) {	
	
	$replace = array();
	$replace['2'][] = array('ия','ии');
	$replace['2'][] = array('ия','ии');
	$replace['2'][] = array('ий','ом');
	$replace['2'][] = array('ое','ом');
	$replace['2'][] = array('ая','ой');
	$replace['2'][] = array('ль','ле');
	$replace['1'][] = array('а','е');
	$replace['1'][] = array('о','е');
	$replace['1'][] = array('и','ах');
	$replace['1'][] = array('ы','ах');
	$replace['1'][] = array('ь','и');
	
	foreach ($replace as $length => $replacement) {
		$str_length = mb_strlen($str, 'UTF-8');
		$find = mb_substr($str, $str_length - $length, $str_length, 'UTF-8');
		foreach($replacement as $try) {
			if ( $find == $try[0] ) {
				$str = mb_substr($str, 0, $str_length - $length, 'UTF-8');
				$str .= $try['1'];
				return $str;
			}
		}
	}
	if ($find == 'е') {
		return $str;
	} else {
		return $str.'е';
	}
	
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Осло -> в Осле ? :-)

города (деревни и село) оканчивающиеся на -и, -о, -е(ё), -ово, -ево, -ино, -ыно, не склоняются

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

судя по этому 

$replace['1'][] = array('о','е');

склоняются:-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Просто оставлю тут:

Просто отвечу тут :)

 

Если очень это нужно, то есть

http://sourceforge.net/projects/phpmorphy

 

Посмотри поиск с морфологией

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам шашечки или ехать? :) Мне нужно было 30 крупных городов Украины и РФ. Ростов-на-Дону заменил на Ростов и доволен. А если кому надо Улан-Удэ и Осло, то тут, конечно, парой стоковых функций не отделаешься. True story.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Глупости это все. Только массив "вручную" переведенных, все остальное - от лукавого.

chukcha, А вот это круто! Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×