public static function singularize($word) {
		if (isset(static::$_singularized[$word])) {
			return static::$_singularized[$word];
		}
		if (empty(static::$_singular['irregular'])) {
			static::$_singular['irregular'] = array_flip(static::$_plural['irregular']);
		}
		extract(static::$_singular);

		if (!isset($regexUninflected) || !isset($regexIrregular)) {
			$regexUninflected = static::_enclose(join('|', $uninflected + static::$_uninflected));
			$regexIrregular = static::_enclose(join('|', array_keys($irregular)));
			static::$_singular += compact('regexUninflected', 'regexIrregular');
		}
		if (preg_match("/(.*)\\b({$regexIrregular})\$/i", $word, $regs)) {
			$singular = substr($word, 0, 1) . substr($irregular[strtolower($regs[2])], 1);
			return static::$_singularized[$word] = $regs[1] . $singular;
		}
		if (preg_match('/^(' . $regexUninflected . ')$/i', $word, $regs)) {
			return static::$_singularized[$word] = $word;
		}
		foreach ($rules as $rule => $replacement) {
			if (preg_match($rule, $word)) {
				return static::$_singularized[$word] = preg_replace($rule, $replacement, $word);
			}
		}
		return static::$_singularized[$word] = $word;
	}
public static function singularize($word) {
		if (isset(static::$_singularized[$word])) {
			return static::$_singularized[$word];
		}
		if (empty(static::$_singular['irregular'])) {
			static::$_singular['irregular'] = array_flip(static::$_plural['irregular']);
		}
		extract(static::$_singular);

		if (!isset($regexUninflected) || !isset($regexIrregular)) {
			$regexUninflected = static::_enclose(join('|', $uninflected + static::$_uninflected));
			$regexIrregular = static::_enclose(join('|', array_keys($irregular)));
			static::$_singular += compact('regexUninflected', 'regexIrregular');
		}
		if (preg_match("/(.*)\\b({$regexIrregular})\$/i", $word, $regs)) {
			$singular = substr($word, 0, 1) . substr($irregular[strtolower($regs[2])], 1);
			return static::$_singularized[$word] = $regs[1] . $singular;
		}
		if (preg_match('/^(' . $regexUninflected . ')$/i', $word, $regs)) {
			return static::$_singularized[$word] = $word;
		}
		foreach ($rules as $rule => $replacement) {
			if (preg_match($rule, $word)) {
				return static::$_singularized[$word] = preg_replace($rule, $replacement, $word);
			}
		}
		return static::$_singularized[$word] = $word;
	}
public static function singularize ( $ word ) { if ( isset ( static :: $ _singularized [ $ word ] ) ) { return static :: $ _singularized [ $ word ] ; } if ( empty ( static :: $ _singular [ 'irregular' ] ) ) { static :: $ _singular [ 'irregular' ] = array_flip ( static :: $ _plural [ 'irregular' ] ) ; } extract ( static :: $ _singular ) ; if ( ! isset ( $ regexUninflected ) || ! isset ( $ regexIrregular ) ) { $ regexUninflected = static :: _enclose ( join ( '|' , $ uninflected + static :: $ _uninflected ) ) ; $ regexIrregular = static :: _enclose ( join ( '|' , array_keys ( $ irregular ) ) ) ; static :: $ _singular += compact ( 'regexUninflected' , 'regexIrregular' ) ; } if ( preg_match ( "/(.*)\\b({$regexIrregular})\$/i" , $ word , $ regs ) ) { $ singular = substr ( $ word , 0 , 1 ) . substr ( $ irregular [ strtolower ( $ regs [ 2 ] ) ] , 1 ) ; return static :: $ _singularized [ $ word ] = $ regs [ 1 ] . $ singular ; } if ( preg_match ( '/^(' . $ regexUninflected . ')$/i' , $ word , $ regs ) ) { return static :: $ _singularized [ $ word ] = $ word ; } foreach ( $ rules as $ rule => $ replacement ) { if ( preg_match ( $ rule , $ word ) ) { return static :: $ _singularized [ $ word ] = preg_replace ( $ rule , $ replacement , $ word ) ; } } return static :: $ _singularized [ $ word ] = $ word ; }
Changes the form of a word from plural to singular.

@param string $word Word in plural form.
@return string Word in singular form.
Changes the form of a word from plural to singular .