Codeigniter で構築されたカスタム CMS のタグ システムをコーディングしており、特定の形式を適用しようとしています。
基本的に、小文字にする必要がある次の例外を除いて、各単語の最初の文字を大文字にする必要があります。
- 記事: a、an、the
- 調整接続詞: and、but、or、for、nor など。
- 前置詞 (5 文字未満): with、on、at、to、from、by など
さらに、タグが上記のいずれかで始まる場合は、大文字にする必要があります。
適切にフォーマットされたタグの例:
- ゲーム・オブ・スローンズ
- ねずみと人間の
- 最初から最後まで
- ロード・オブ・ザ・リング
- ニード・フォー・スピード
これまでのところ、私はただ持っています:
$tag = 'Lord of the Rings';
$tag = ucwords($tag);
$patterns = array('/A/', '/An/', '/The/', '/And/', '/Of/', '/But/', '/Or/', '/For/', '/Nor/', '/With/', '/On/', '/At/', '/To/', '/From/', '/By/' );
$lowercase = array('a', 'an', 'the', 'and', 'of', 'but', 'or', 'for', 'nor', 'with', 'on', 'at', 'to', 'from', 'by' );
$formatted_tag = preg_replace($patterns, $lowercase, $tag);
// capitalize first letter of string
$formatted_tag = ucfirst($formatted_tag);
echo $formatted_tag;
これによりLord of the Ringsの正しい結果が生成されますが、配列の重複を避けるにはどうすればよいですか? 新しい単語を追加するときにそれらを一致させるのは面倒です。
含まれていない単語がいくつかあると思いますが、使用できる既存の関数またはクラスはありますか?