質問

当社のウェブサイトのユーザーは、多くの場合、名前と住所の情報を大量に入力します。たとえば、すべて大文字、すべて小文字など

それらのケースを修正すれば、見た目はずっと良くなりますが、これを行うための良い方法を誰でも提案できます。単純なアプローチは、名前の各単語を大文字にすることですが、一部の名前を処理する場合は失敗します。以下に例を示します...

  • ボブ・マクドナルド
  • サラオコナー
  • MR PETE SMITH

そしてここにそれらを変換したいものがあります

  • ボブ・マクドナルド
  • サラオコナー
  • ピート・スミス氏

役立つ場合はPHPを使用しています。

役に立ちましたか?

解決

これを行う正しい方法はありません。より具体的に言うと、選択するすべての方法が間違っています。

O'Connorは、所有者によって通常O'Connorとして綴られることがあります。または、実際にはオコナーである場合に誰かがそれをオコナーであると想定することもできますし、その逆もあります。時々マクドナルドはマクドナルドです。法的に「ボブ・スミス」という名前を付けることもできますが、すべての文字は小文字です。

唯一の修正は、ALL-CAPSをFirst Letter Capitalizationに変更することだと思います。それ以外の場合は、ただの名前のままにしておきます。これは、不正なスペルを、クレイジーな名前が必要だと判断した人と区別する方法がないためです。

他のヒント

そのままにしておきます。ユーザーが自分の名前を正しく書くほど自分を尊重していない場合、なぜ気にする必要があるのですか?

名前を後処理するサブルーチンを記述して、それがいくつかのユビキタスなケースを処理すると言いました。

  • 「von」などの大文字ではない単語を除く単語の最初の文字を大文字にします
  • 特定のパターンを探し、一致する単語をカスタム更新します(たとえば、単語が" mc"で始まる場合は3番目の文字を大文字にします)

問題の複雑さのため、修正アルゴリズムが機能した後、名前の手動編集に頼らなければならないと思います。ユーザーが登録すると、名前は後処理され、モデレーションキューに追加されます。そこで、使用する前に必要に応じてチェックして更新し、請求書や小包ラベルに印刷することができます。もちろん、あなたが何をしているのかわかっていると確信しているなら。

そしてもちろん、私のような人の名前の途中に大文字があります。 「修正」しようとすると、私をin辱します。 「デベロッパーアート」が言ったように、人々が自分の名前を正しく書くほど自分自身を尊重しない場合、それを修正するのはあなたの仕事ではありません。

PHPで $ name = ucwords(strtolower($ name)); を使用すると、目的に近づけることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top