Sugestões sobre a fixação nomes povos para que eles são capitalizados corretamente

StackOverflow https://stackoverflow.com/questions/1625274

  •  06-07-2019
  •  | 
  •  

Pergunta

Os usuários do nosso site, muitas vezes digitar um monte de lixo para o nome e endereço informações. por exemplo, todos os CAPS, todas as letras minúsculas etc.

Parece muito melhor se fixarmos o caso para eles, mas alguém pode sugerir uma boa maneira de fazer isso. Uma abordagem simples é apenas para capitalizar cada palavra em seu nome, mas isso falhar ao lidar com alguns nomes. Aqui estão alguns exemplos ...

  • Bob McDonald
  • Sarah O'Connor
  • MR PETE SMITH

e aqui é o que eu gostaria de transformá-los em

  • Bob McDonald
  • Sarah O'Connor
  • Mr Pete Smith

Eu estou usando PHP se isso ajuda.

Foi útil?

Solução

Não há nenhuma maneira correta de fazer isso, ou para colocá-lo mais especificamente, cada método que você escolher vai estar errado.

Às vezes O'Connor será habitualmente escrito por seu proprietário como O'connor. Ou, alternativamente, alguém poderia ter assumido que era O'Connor quando é realmente Oconnor, ou vice-versa. Às vezes McDonald é Mcdonald. Você poderia legalmente ter o nome "Bob Smith", onde todas as letras são minúsculas.

Eu acho que o única corrigir eu faria é para mudar ALL-CAPS a Primeira Carta de Capitalização. Caso contrário, basta deixá-lo sozinho, porque não há nenhuma maneira de distinguir um speller fétido de alguém que decidiu que eles queriam um nome louco.

Outras dicas

Deixar como em Is. Se os usuários não respeitar-se o suficiente para escrever seus nomes corretamente, por que você deveria se preocupar?

Dito isto, escrever uma sub-rotina para pós-processar os nomes, ele vai lidar com alguns casos ubíquos.

  • Capitalize primeiras letras das palavras excluindo palavras não capitalizáveis ??como "von"
  • Procure padrões específicos e palavras costume-update combinados (por exemplo capitalizar a terceira carta se a palavra começa com "mc")

Devido à complexidade do problema que eu acho que você teria que recorrer a edição manual dos nomes após o algoritmo de correção funcionou. Um usuário se registra, o nome é pós-processados, em seguida, adicionado a algumas fila de moderação onde você verificá-lo e atualizá-lo conforme necessário antes de ele se acostuma e talvez impressos nas faturas e etiquetas de encomendas. Claro, se você tem certeza que você sabe o que está fazendo.

E, claro, há pessoas como eu com uma letra maiúscula no meio de seu nome. Você vai me insultar se você tentar 'corrigir' isso. Like 'Art desenvolvedor disse, se as pessoas não respeitam a si mesmos o suficiente para escrever seus nomes corretamente, ele não é seu trabalho para corrigi-lo.

Você pode usar $name = ucwords(strtolower($name)); em PHP para chegar perto do que você está querendo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top