3

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

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

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

这就是我想把它们变成

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

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

4

4 回答 4

9

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

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

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

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

于 2009-10-26T14:52:27.663 回答
7

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

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

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

于 2009-10-26T14:58:07.807 回答
4

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

于 2009-10-26T15:00:41.047 回答
3

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

于 2009-10-26T14:57:56.043 回答