1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PHP】単数系の英語を複数形に直す

Last updated at Posted at 2020-11-20

作ったコードをQiitaに書く様にしていきたいと思います。

単数系の英語を複数形に直すというコードを下記の条件で作成しました。
・末尾がs, sh, ch, o, x である場合英単語の末尾にesを付ける
・末尾がf, fe のいずれかである英単語の末尾の f, fe を除き、末尾に ves を付ける
・末尾の1文字がyで、末尾から2文字目がa, i, u, e, oのいずれでもない英単語の末尾の y を除き、末尾に ies を付ける
・上4つに当てはまらないものにはsを付ける

英語に多くある不規則変換は、それ用に辞書を作成し対応しています。
なので実際に使用する際はもっと多くの不規則変換を登録する必要があると思われます。

<?php
function SingularToPlural($in)
{
    //不規則変換用の辞書
    $dictionary = [
        'child'      => 'children',
        'crux'       => 'cruces',
        'foot'       => 'feet',
        'knife'      => 'knives',
        'leaf'       => 'leaves',
        'louse'      => 'lice',
        'man'        => 'men',
        'medium'     => 'media',
        'mouse'      => 'mice',
        'oasis'      => 'oases',
        'person'     => 'people',
        'phenomenon' => 'phenomena',
        'seaman'     => 'seamen',
        'snowman'    => 'snowmen',
        'tooth'      => 'teeth',
        'woman'      => 'women',
    ];

    //先に不規則変換をチェックしてから変換を行う
    if (array_key_exists($in, $dictionary)) {
        return $dictionary[$in];
    } else {
        $Singular = $in;
        $Singular = preg_replace("/(s|sh|ch|o|x)$/", "$1es", $Singular);
        $Singular = preg_replace("/(f|fe)$/", "ves", $Singular);
        $Singular = preg_replace("/(a|i|u|e|o)y$/", "$1ys", $Singular);
        $Singular = preg_replace("/y$/", "ies", $Singular);

        if (!preg_match("/s$/", $Singular)) {
            $Singular = $Singular . "s";
        }
        return $Singular;
    }
}

//単語毎に改行してある入力を想定、それをループ処理で取得する
while ($line = fgets(STDIN)) {
    $array[] = trim($line);
}
foreach ($array as $row) {
}
foreach ($array as $value) {
    echo SingulartoPlural($value) . "\n";
}
?>
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?