PHP – Converter string para maiúscula ou minúscula com acentos

Ao decorrer de um projeto precisei transformar strings em maiúsculas ou minúsculas conforme ocasião e para isso o PHP fornece as funções abaixo:

strtolower – Converte uma string para minúsculas
strtoupper – Converte uma string para maiúsculas
ucfirst – Converte para maiúscula o primeiro caractere de uma string
ucwords -Converte para maiúsculas o primeiro caractere de cada palavra

Porém nossa língua portuguesa existem as preciosidades dos acentos, na qual o PHP não consegue converter nativamente. Então resolvi fazer uma função para elas, veja:
// Função para transformar strings em Maiúscula ou Minúscula com acentos
// $palavra = a string propriamente dita
// $tp = tipo da conversão: 1 para maiúsculas e 0 para minúsculas
function convertem($term, $tp) {
if ($tp == "1") $palavra = strtr(strtoupper($term),"àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ","ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß");
elseif ($tp == "0") $palavra = strtr(strtolower($term),"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß","àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ");
return $palavra;
}

// Exemplo de Utilização - Maiúscula
$exemplo1 = "notícias";
echo convertem($exemplo1, 1);

// Exemplo de Utilização - Minúscula
$exemplo2 = "NOTÍCIAS";
echo convertem($exemplo2, 0);

Bom, agora com esta função já da pra converter/transformar qualquer string que tenha caracteres acentuados em maiúscula ou minúscula. E não se esqueça, o seu comentário é o meu pagamento para continuar publicando minhas dicas e côdigos. ;)

71 comments

  1. Dei uma melhorada…

    function convertem($term, $tp) {
    switch($tp) {
    //Converte uma string para minúsculas
    case ‘1’:
    $palavra = strtr(strtoupper($term),”àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ”,”ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß”);
    break;
    //Converte uma string para maiúsculas
    case ‘2’:
    $palavra = strtr(strtolower($term),”ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß”,”àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ”);
    break;
    //Converte para maiúscula o primeiro caractere de uma string
    case ‘3’:
    $palavra = strtr(ucfirst($term),”ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß”,”àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ”);
    break;
    //Converte para maiúsculas o primeiro caractere de cada palavra
    case ‘4’:
    $palavra = strtr(ucwords($term),”ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß”,”àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ”);
    break;
    }
    return $palavra;
    }

  2. Cara, muito obrigado, tava me matando aqui, sou novo em php, salvou minha pele!!!! \O/

  3. mb_strtoupper($str) funcionou comigo. Mas isso era apenas para um script pessoal, nada de público. Mesmo assim sua funçao em php4 funciona!

    Valew!!!!

  4. Obrigada, deu certo! A segunda função incrementada do Marcus não funcionou aqui não. Abraços

  5. é… pra quem precisa trabalhar com clientes antigos que ainda tem versões ultrapassadas no servidor, esta foi a solução. obrigado pelo share!

  6. Temiscocles, isso ai.. é que o post é bem antigo. Mas ta valendo… :)

  7. Parabéns amigo.
    Muito obrigado pela ajuda, funcionou perfeitamente.

    Abraço.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.