cmd

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

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

cmd    251

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

 

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

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

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

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

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.'е';
	}
	
}

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


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

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

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

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


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

судя по этому 

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

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

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


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

 

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

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

 

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

http://sourceforge.net/projects/phpmorphy

 

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

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


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

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

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


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

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

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

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


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

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

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

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

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

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

Войти

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

Войти


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

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