Precisava atribuir um padrão para os nomes inseridos através de um formulário de cadastro. Cada um tem seu jeito de escrever. Uns usam maiúscula o tempo todo, outros escrevem tudo em minúsculas e ainda é possível uma infinidade de variações. Por isso, se ficar por conta dos usuários de um sistema, a nossa base de dados vira uma bagunça visual. Cabe ao programador o trabalho de padronizar a forma como será armazenada e exibida os dados relativo aos nomes de um cadastro.
Pensando nisso chegamos a este código resumido mas eficiente. Este código transforma a primeira letra de cada nome inserido em um campo ‘nome’ para maiúscula mantendo preposições presentes em alguns nomes na lingua portuguesa em minúscula.
A função do PHP que transforma a primeira letra de uma palavra em maiúscula vai transformar todas as palavras de um nome, mas sabemos que em nomes próprios, as palavras do, da, de, e, das e dos continuam em minuscula e se queremos padronizar nossos dados precisamos de uma função que faça isso para nós, independente da forma que o usuário digita o nome. Qualquer forma que for digitado o seguinte nome vai produzir o mesmo resultado:
alfredo da fonseca e silva => Alfredo da Fonseca e Silva ALFREDO DA FONSEDA E SILVA => Alfredo da Fonseca e Silva ALfredo da FonSeca e siILVA => Alfredo da Fonseca e Silva
O código
Ai vai o que é importante, o código:

$value = 'élida da fONSEca DAS DORES e oliveira'; $palavra=explode( " ", mb_convert_case($value, MB_CASE_LOWER, 'UTF-8') ); $nomeconvertido = ''; for ($i=0; $i < count($palavra) ; $i++) { if ($palavra[$i] != "da" && $palavra[$i] != "de" && $palavra[$i] != "do" && $palavra[$i] != "das" && $palavra[$i] != "dos" && $palavra[$i] != "e") { $palavra[$i] = mb_convert_case($palavra[$i], MB_CASE_TITLE, 'UTF-8'); } $nomeconvertido = $nomeconvertido." ".$palavra[$i]; } echo $nomeconvertido;
Espero que tenha sido útil para você.