static function plural($string) {
		$plural = array(
			array('/(quiz)$/i', "$1zes"),
			array('/^(ox)$/i', "$1en"),
			array('/([m|l])ouse$/i', "$1ice"),
			array('/(matr|vert|ind)ix|ex$/i', "$1ices"),
			array('/(x|ch|ss|sh)$/i', "$1es"),
			array('/([^aeiouy]|qu)y$/i', "$1ies"),
			array('/([^aeiouy]|qu)ies$/i', "$1y"),
			array('/(hive|move)$/i', "$1s"),
			array('/(?:([^f])fe|([lr])f)$/i', "$1$2ves"),
			array('/sis$/i', "ses"),
			array('/([ti])um$/i', "$1a"),
			array('/(buffal|tomat)o$/i', "$1oes"),
			array('/(bu)s$/i', "$1ses"),
			array('/(alias|status|campus)$/i', "$1es"),
			array('/(octop|cact|vir)us$/i', "$1i"),
			array('/(ax|test)is$/i', "$1es"),
			array('/^(m|wom)an$/i', "$1en"),
			array('/(child)$/i', "$1ren"),
			array('/(p)erson$/i', "$1eople"),
			array('/s$/i', "s"),
			array('/$/', "s")
		);

		$words = self::getWords($string);
		$word = array_pop($words);

		// check for matches using regular expressions
		foreach ($plural as &$pattern) {
			if (preg_match($pattern[0], $word)) {
				$prefix = substr($string, 0, strrpos($string, $word));
				return $prefix . preg_replace($pattern[0], $pattern[1], $word);
			}
		}
		return $string . 's';
	}
static function plural($string) {
		$plural = array(
			array('/(quiz)$/i', "$1zes"),
			array('/^(ox)$/i', "$1en"),
			array('/([m|l])ouse$/i', "$1ice"),
			array('/(matr|vert|ind)ix|ex$/i', "$1ices"),
			array('/(x|ch|ss|sh)$/i', "$1es"),
			array('/([^aeiouy]|qu)y$/i', "$1ies"),
			array('/([^aeiouy]|qu)ies$/i', "$1y"),
			array('/(hive|move)$/i', "$1s"),
			array('/(?:([^f])fe|([lr])f)$/i', "$1$2ves"),
			array('/sis$/i', "ses"),
			array('/([ti])um$/i', "$1a"),
			array('/(buffal|tomat)o$/i', "$1oes"),
			array('/(bu)s$/i', "$1ses"),
			array('/(alias|status|campus)$/i', "$1es"),
			array('/(octop|cact|vir)us$/i', "$1i"),
			array('/(ax|test)is$/i', "$1es"),
			array('/^(m|wom)an$/i', "$1en"),
			array('/(child)$/i', "$1ren"),
			array('/(p)erson$/i', "$1eople"),
			array('/s$/i', "s"),
			array('/$/', "s")
		);

		$words = self::getWords($string);
		$word = array_pop($words);

		// check for matches using regular expressions
		foreach ($plural as &$pattern) {
			if (preg_match($pattern[0], $word)) {
				$prefix = substr($string, 0, strrpos($string, $word));
				return $prefix . preg_replace($pattern[0], $pattern[1], $word);
			}
		}
		return $string . 's';
	}
static function plural ( $ string ) { $ plural = array ( array ( '/(quiz)$/i' , "$1zes" ) , array ( '/^(ox)$/i' , "$1en" ) , array ( '/([m|l])ouse$/i' , "$1ice" ) , array ( '/(matr|vert|ind)ix|ex$/i' , "$1ices" ) , array ( '/(x|ch|ss|sh)$/i' , "$1es" ) , array ( '/([^aeiouy]|qu)y$/i' , "$1ies" ) , array ( '/([^aeiouy]|qu)ies$/i' , "$1y" ) , array ( '/(hive|move)$/i' , "$1s" ) , array ( '/(?:([^f])fe|([lr])f)$/i' , "$1$2ves" ) , array ( '/sis$/i' , "ses" ) , array ( '/([ti])um$/i' , "$1a" ) , array ( '/(buffal|tomat)o$/i' , "$1oes" ) , array ( '/(bu)s$/i' , "$1ses" ) , array ( '/(alias|status|campus)$/i' , "$1es" ) , array ( '/(octop|cact|vir)us$/i' , "$1i" ) , array ( '/(ax|test)is$/i' , "$1es" ) , array ( '/^(m|wom)an$/i' , "$1en" ) , array ( '/(child)$/i' , "$1ren" ) , array ( '/(p)erson$/i' , "$1eople" ) , array ( '/s$/i' , "s" ) , array ( '/$/' , "s" ) ) ; $ words = self :: getWords ( $ string ) ; $ word = array_pop ( $ words ) ; // check for matches using regular expressions foreach ( $ plural as & $ pattern ) { if ( preg_match ( $ pattern [ 0 ] , $ word ) ) { $ prefix = substr ( $ string , 0 , strrpos ( $ string , $ word ) ) ; return $ prefix . preg_replace ( $ pattern [ 0 ] , $ pattern [ 1 ] , $ word ) ; } } return $ string . 's' ; }
Returns the plural version of the given word.  If the plural version is
the same, then this method will simply add an 's' to the end of
the word.
@param string $string
@return string
Returns the plural version of the given word . If the plural version is the same then this method will simply add an s to the end of the word .