You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
892 B
43 lines
892 B
<?php |
|
/** |
|
* Text helper class file. |
|
* |
|
* @author Qiang Xue <qiang.xue@gmail.com> |
|
* @author Alex Makarov <sam@rmcreative.ru> |
|
* @link http://www.yiiframework.com/ |
|
* @copyright Copyright © 2008-2012 Yii Software LLC |
|
* @license http://www.yiiframework.com/license/ |
|
*/ |
|
|
|
namespace yii\util; |
|
|
|
/** |
|
* Text helper |
|
* |
|
* @since 2.0 |
|
*/ |
|
class Text |
|
{ |
|
/** |
|
* Converts a word to its plural form. |
|
* @param string $name the word to be pluralized |
|
* @return string the pluralized word |
|
*/ |
|
public function pluralize($name) |
|
{ |
|
$rules=array( |
|
'/(x|ch|ss|sh|us|as|is|os)$/i' => '\1es', |
|
'/(?:([^f])fe|([lr])f)$/i' => '\1\2ves', |
|
'/(m)an$/i' => '\1en', |
|
'/(child)$/i' => '\1ren', |
|
'/(r)y$/i' => '\1ies', |
|
'/s$/' => 's', |
|
); |
|
foreach($rules as $rule=>$replacement) |
|
{ |
|
if(preg_match($rule,$name)) |
|
return preg_replace($rule,$replacement,$name); |
|
} |
|
return $name.'s'; |
|
} |
|
}
|
|
|