Jump to content
php.lv forumi

Ģenetīvs


GedroX

Recommended Posts

Vienā vietā nācās pārveidot cilvēku vārdus ģenetīvā un sanāca diezgan īss kods. Kādam varbūt noder. =)

 

if (!function_exists('genetivs')) {
function genetivs($s) {
	$b = Array(
		'p'=>'pj','s'=>'š','g'=>'ģ','l'=>'ļ','z'=>'ž','c'=>'č','v'=>'vj','b'=>'bj','n'=>'ņ',
	);
	$o = $s;
	$l = strlen($s);
	switch (true) {
		case substr($o, -2) == 'is':
			if (isset($b[substr($o, -3, 1)])) {
				$t = $b[substr($o, -3, 1)];
			} else {
				$t = substr($o, -3, 1);
			}
			return substr($s, 0, $l - 3) . $t . 'a';
		case substr($o, -1) == 'a':
		case substr($o, -1) == 'e':
			return $s . 's';
		case substr($o, -1) == 's':
			return substr($s, 0, $l - 1) . 'a';
		case substr($o, -2) == 'š':
			return substr($s, 0, $l - 2) . 'a';
		default:
			return $s;
	}
}
}

 

Kods iekš paste.php.lv

 

Varbūt kādi vēl izņēmumi?

 

P.S. Tā kā ar funkciju strtolower utf-ā nepietiek, neņēmos un nepievienoju universālo. Tādēļ vārdu nobeigumiem jābūt ar maziem burtiem! =P

Edited by GedroX
Link to comment
Share on other sites

Suns... Stulbais izņēmums! =) Īstenībā skripts domāts personu vārdiem. Cerams, ka nevienu cilvēku tā nesauc. =P

 

Un liekās, ka nav personu vārdu 6tajā dzimtē... Ja ir, tad ir sū... =) (pirts ~> pirta)

Edited by GedroX
Link to comment
Share on other sites

Suns... Stulbais izņēmums! =) Īstenībā skripts domāts personu vārdiem. Cerams, ka nevienu cilvēku tā nesauc. =P

 

Un liekās, ka nav personu vārdu 6tajā dzimtē... Ja ir, tad ir sū... =) (pirts ~> pirta)

1) latviešu valodā ir tikai 2 dzimtes, un tās nav nosauktas skaitļa vārdos.

2) suns un vēl pāris vārdi nav 6., bet 2. deklinācija.

 

:)

Link to comment
Share on other sites

1) latviešu valodā ir tikai 2 dzimtes, un tās nav nosauktas skaitļa vārdos.

2) suns un vēl pāris vārdi nav 6., bet 2. deklinācija.

 

:)

Nemaz nesaku, ka suns ir 6tā dzimte [deklinācija].

 

Bet nu vārds Zibens (vai arī uzvārds) pilnīgi varētu būt... :P

Edited by GedroX
Link to comment
Share on other sites

×
×
  • Create New...