关于修复人名的建议,以便正确地大写

时间:2009-10-26 14:49:33

标签: php case-sensitive names

我们网站的用户经常输入大量垃圾来获取姓名和地址信息。例如,所有CAPS,全部小写等。

如果我们为他们修复案例看起来好多了,但任何人都可以建议这样做的好方法。一个简单的方法就是将名称中的每个单词大写,但是在处理某些名称时会失败。以下是一些例子......

  • bob mcdonald
  • sarah o'connor
  • MR PETE SMITH

以下是我想将它们转换为

的内容
  • Bob McDonald
  • Sarah O'Connor
  • Pete Smith先生

如果有帮助,我正在使用PHP。

4 个答案:

答案 0 :(得分:9)

保持原样。如果用户不够尊重自己的名字,你为什么要关心呢?

话虽如此,写一个子程序来对名称进行后处理,它会处理一些无处不在的案例。

  • 将首字母大写不包括不可资本化的字词,例如“von”
  • 查找特定模式并自定义更新匹配的单词(例如,如果单词以“mc”开头,则将第三个字母大写)

由于问题的复杂性,我认为在校正算法运行后,您不得不求助于手动编辑名称。用户注册后,将对名称进行后处理,然后将其添加到某个审核队列,您可以在其中检查并在使用之前根据需要进行更新,也可以打印在发票和宗地标签上。当然,如果你确定你知道自己在做什么。

答案 1 :(得分:7)

没有正确的方法可以做到这一点,或者更具体地说,你选择的每种方法都是错误的。

有时奥康纳通常会被其拥有者称为奥康纳。或者有人可能认为它是O'Connor,实际上是Oconnor,反之亦然。有时麦当劳是麦当劳。你可以合法地命名为“bob smith”,其中所有的字母都是小写的。

我认为我要做的唯一修正是将ALL-CAPS更改为First Letter Capitalization。否则,不要管它,因为没有办法区分一个邋spe的拼写者和一个决定他们想要一个疯狂名字的人。

答案 2 :(得分:4)

当然,像我这样的人在他们的名字中间写着大写字母。如果你试图“纠正”它,你会侮辱我。就像'开发者艺术'所说的那样,如果人们不尊重自己,不能正确地写出自己的名字,那么解决它就不是你的工作。

答案 3 :(得分:3)

您可以在PHP中使用$name = ucwords(strtolower($name));来接近您想要的内容。