用PHP复数

men*_*mam 12 php

我有很多信息要从数据库中显示出来.有些是法国人,有些是英国人.有些是独特的,有些是列表......

问题是:如何在PHP中管理所有不同的选项

IF ELSE SWITCH ARRAY(全文)

其他方法......

现在问题出现在气味清单上,有些有一种(气味)其他有很多(气味)放s或不是痛苦.....帮助!

谢谢

mpe*_*pen 31

您可以尝试我写的这个功能:

/**
 * Pluralizes a word if quantity is not one.
 *
 * @param int $quantity Number of items
 * @param string $singular Singular form of word
 * @param string $plural Plural form of word; function will attempt to deduce plural form from singular if not provided
 * @return string Pluralized word if quantity is not one, otherwise singular
 */
public static function pluralize($quantity, $singular, $plural=null) {
    if($quantity==1 || !strlen($singular)) return $singular;
    if($plural!==null) return $plural;

    $last_letter = strtolower($singular[strlen($singular)-1]);
    switch($last_letter) {
        case 'y':
            return substr($singular,0,-1).'ies';
        case 's':
            return $singular.'es';
        default:
            return $singular.'s';
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

pluralize(4, 'cat'); // cats
pluralize(3, 'kitty'); // kitties
pluralize(2, 'octopus', 'octopii'); // octopii
pluralize(1, 'mouse', 'mice'); // mouse
Run Code Online (Sandbox Code Playgroud)

显然有很多特殊的单词,这个函数不能正确复数,但这就是$plural争论的主题:-)

看看维基百科,看看多元化是多么复杂!

  • @Francesco当然可以.用法:`pluralize(3,'Ranch','Ranches')`.第三个参数仅对最基本的单词是可选的. (3认同)

小智 25

您可能希望查看gettext扩展.更具体地说,它听起来会像ngettext()你想要的那样:只要你有一个可以计数的数字,它就能正确地复数单词.

print ngettext('odor', 'odors', 1); // prints "odor"
print ngettext('odor', 'odors', 4); // prints "odors"
print ngettext('%d cat', '%d cats', 4); // prints "4 cats"
Run Code Online (Sandbox Code Playgroud)

你也可以正确地处理翻译过的复数形式,这是它的主要目的,尽管还有很多额外的工作要做.

  • 实际上它将是`printf(ngettext('%d cat','%d cats',4),4); //打印"4只猫"` (4认同)

Jes*_*his 7

IMO的最佳方法是为每种语言提供所有复数规则的数组,即为array('man'=>'men', 'woman'=>'women');每个单数字写一个pluralize()函数.

您可能需要查看CakePHP变换器以获得一些灵感.

https://github.com/cakephp/cakephp/blob/master/src/Utility/Inflector.php


Ger*_*rry 5

享受:https://github.com/ICanBoogie/Inflector

多语言的变形器,将单词从单数转换为复数,强调为驼峰,以及更多.