【问题标题】:Suggestions on fixing peoples names so they are capitalised correctly关于固定人名以便正确大写的建议
【发布时间】:2009-10-26 14:49:32
【问题描述】:

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

如果我们为他们解决这个问题,它看起来会好很多,但是任何人都可以提出一个好的方法来做到这一点。一种简单的方法是将名称中的每个单词大写,但是在处理某些名称时会失败。这里有几个例子...

  • 鲍勃·麦当劳
  • 莎拉·奥康纳
  • 皮特·史密斯先生

这就是我想把它们变成的东西

  • 鲍勃·麦克唐纳
  • 莎拉·奥康纳
  • 皮特·史密斯先生

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

【问题讨论】:

  • 在荷兰语中,出于大写目的,IJ 被视为单个字母。像 IJmuiden 这样的名称不拼写为 Ijmuiden ... ;-) 此解决方案是否也应该知道这些名称?如果不是,则将除每个单词的第一个字母外的所有内容都设为小写。

标签: php case-sensitive names


【解决方案1】:

保持原样。如果用户不尊重自己,无法正确写出自己的名字,你为什么要关心?

话虽如此,编写一个子程序对名称进行后处理,它将处理一些普遍存在的情况。

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

由于问题的复杂性,我认为您将不得不在校正算法起作用后诉诸手动编辑名称。用户注册,名称经过后处理,然后添加到一些审核队列中,您可以在其中检查并根据需要更新它,然后再使用它,并可能打印在发票和包裹标签上。当然,如果您确定自己知道自己在做什么。

【讨论】:

    【解决方案2】:

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

    有时 O'Connor 会被其所有者习惯拼写为 O'connor。或者,当它实际上是 Oconnor 时,有人可能会认为它是 O'Connor,反之亦然。有时麦当劳就是麦当劳。您可以合法地拥有“bob smith”这个名字,其中所有字母都是小写的。

    我认为我要做的唯一修复是将全大写更改为首字母大写。否则,别管它,因为没有办法区分一个粗俗的拼写者和一个决定他们想要一个疯狂的名字的人。

    【讨论】:

    • 我喜欢您的建议,即检查所有大写字母并在这种情况下做一些事情。
    【解决方案3】:

    当然,也有像我这样的人,他们的名字中间有一个大写字母。如果你试图“纠正”它,你会侮辱我。正如“Developer Art”所说,如果人们不尊重自己,无法正确书写自己的名字,那么修复它不是你的工作。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 这是我想的方法——但其他关于正确性的 cmets 让我不再一起发帖了。这可能会让你走上 90% 的路——至少对于普通的美国人口来说是这样。然后碰到查找表可能会更多地按摩这一点。对于那些全部小写或全部大写的名称,也许只有正确的大小写 - 假设那些遇到混合大小写的名称是正确的?只是一个想法。
      • 我可能会做的是检测名称是全小写还是全大写。如果是这样,请执行此操作。如果他们使用了混合案例,那么假设他们为我完成了工作并保持原样。
      猜你喜欢
      • 1970-01-01
      • 2023-03-25
      • 2014-05-29
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多