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

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

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

这就是我想把它们变成的

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

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

有帮助吗?

解决方案

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

有时,O'Connor 的主人通常会将其拼写为 O'connor。或者,有人可能会认为这是奥康纳,但实际上是奥康纳,反之亦然。有时麦当劳就是麦当劳。您可以合法地使用“bob smith”这个名字,其中所有字母都是小写的。

我觉得 仅有的 我要做的修复是将全部大写更改为首字母大写。否则,就不要管它,因为没有办法区分一个粗鲁的拼写者和那些决定自己想要一个疯狂名字的人。

其他提示

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

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

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

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

当然,还有像我这样的人,名字中间有一个大写字母。如果你试图“纠正”它,你就是在侮辱我。就像“Developer Art”所说,如果人们没有足够的尊重自己而无法正确地写下自己的名字,那么修复它就不是你的工作了。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top