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
Olhaaaaaa, esse codigo me ajudou muito viu… ficava muito feio converter strings e perder o acento com isso…
parabens.. =]
já ouviu falar que esta função superou este impecilho em uma nova versão do php (não sei a partir de qual)… mas não tenho certeza quanto a isso… vou pesquisar
Muito legal! Valeu. Consegui resolver rapidamente os títulos de um site em Joomla!
title),”àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ”,”ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß”);?>
Obrigado.
Nota 10 !!! Caiu como uma luva para o que eu queria.
usei isso! :D
Valeu pela dica brother… Foi muito útil
[ =
Amém
Deus lhe abençoe, me ajudou também
eu te amo
Perfeito cara! Ajudou demais. :D
Diogão,
como atribui um valor NULL a uma variavel?
$variavel = NULL; não deu aqui.
muito bom, funcionou perfeitamente.
abraço.
Parabéns, muito bom mesmo.
Muito obrigado mesmo, estava com problemas com a função do php, mas acho que no servidor ok, pois no meu apache funcionou perfeitamente e quando upava a página nao funcionava, mas agora com sua ajuda ficou tudo ok?abraços!
Muito obrigada.
Funcionou perfeitamente para o que queria.
Abraço.
Valeu cara, era exatamente o que precisava para preenchimento correto das minhas fichas de inscrições do Vestibular.
Abraços.
Bah, bem certinho. esta fazendo parte da minha coleção de funçoes
Testei o seu código mas a conversão para minúsculas não funcionou.
Gostaria que esclarecesse para mim essa questão.
Camarada, precisei desta informação e achei aqui. Muito legal esse código. Parabéns!!!
Deus continue te dando sabedoria para postar mais código bacana.
Um abraço.
Eaiii vlw cara muito bom mesmo a função de grande utilidade.
mucho bom.
Cara vc é o cara eu to começando a aprender ajax, com php, com postgresql, html, css, xml, e mais um monte de letrinahs dessa sopa de letrinhas que é nossa profissão rsrsrs
perfeito cara muito obrigado e parabéns mesmo pelo seu conhecimento e por sua boa vontade em ajudar quem tá querendo ganhar dinheiro,dogo, quero dizer aprender rsrsrsrs.
Cara, você salvou minha pele na construção de alguns lançamentos contábeis automáticos que estava fazendo, os contadores normalmente não gostam de letras minúsculas nos lançamentos.
Obrigado
Gente para passar strings acentuadas para maiuscula é só setar o locale com a função setlocale() do php, da seguinte forma:
setlocale(LC_CTYPE, “ptb”,”BR”);
assim quando vc usar strtoupper() vai funcionar.
ok.
Me ajudou muito. Valeu.
VLw kra show de bolaaaa… veio a calhar esse script aew!!!
vlw brother!!
Javascript e MySql não funciona, mas sua função sim. Muito obrigado.
MT bom. Deu mt jeito. Parabéns
Ótima solução, resolveu o meu problema.
Muito bom mesmo cara, me ajudou, parabens!!
Felipe Fulanetto
Entao continue publicando!
Otimo post!
O código é bom, mas você não preve palavras que iniciam com acento. Por exemplo Índio. Vale uma atualização, ai vai ficar redondo! Abraço!
Muito obrigado.
Estou terminando meu projeto de conclusão de curso agora e o sistema de buscas do projeto funcionava apenas se digitassem a palavra exatamente como estava no banco de dados, com este seu tutorial consegui fazer um sistema de buscas funcional e esperto, muito obrigado!
me ajudou vlw mesmo obrigado !!!
Ivan, funciona com qualquer palavra, sendo o acento no inicio, meio ou fim da palavra.
Jose Eduardo, voce sempre registra dominios nacionais no Registro.br. Para dominios internacionais (.com .net .org .. etc.) voce pode utilizar o Brasil Registros.
Os dominios informados ja estao registrado, espero que voce tenha conseguido registrar a tempo. :)
Use o LIKE em suas frases SQL
tomei a liberdade e inclui na função a colocação da 1 letra de cada palavra como maiúscula.
function convertem($term, $tp) {
$a1=”àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ”;
$b1=”ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß”;
if ($tp == “1”) $palavra = strtr(strtoupper($term),$a1,$b1);
elseif ($tp == “0”) $palavra = strtr(strtolower($term),$b1,$a1);
elseif ($tp == “2”) $palavra = htmlentities(mb_convert_case($term, MB_CASE_TITLE, “ISO-8859-1”));
//elseif ($tp == “2”) $palavra = ucwords(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).””;
// Exemplo de Utilização – Minúscula 1\letra
$exemplo2 = “NOTÍCIAS ÁULA”;
echo convertem($exemplo2, 2).””;
?>
Puta brother, muito bom… quando resolvo pesquisar alguma coisa bem explicada ou ainda melhor, pronta pra se usar nas coisas mais comuns, caio aqui e saio satisfeito, obrigado.
abç
Muito obrigado amigo, era exatemente o que eu estava precisando.
Toda vez que eu inseria palavras acentuadas no meu bd, acontecia isso: ÓTIMO ficava óTIMO. Você ajudou muito.
O PHP 5 TEM UMA FUNÇÃO QUE JÁ CONVERTE COM A ACENTUAÇÃO:
mb_strtoupper($str);
Olhem mais detalhes no manual do Php.
function acento($string,$tamanho){
mb_internal_encoding(“UTF-8”);
if($tamanho == ‘UPPER’) mb_strtoupper($string);
elseif ($tamanho == ‘LOWER’) mb_strtolower($string);
return $string;
}
$exemplo1 = “notícias”;
echo acento($exemplo1, ‘UPPER’) . PHP_EOL;
$exemplo2 = “NOTÍCIAS”;
echo acento($exemplo2, ‘LOWER’) . PHP_EOL;
Beleza João! Isso ae, o PHP nas versões mais atuais ja deu a solução para o problema.
Olá vlw e mto obrigado pelo post me ajudou mto tinha mais de 5000 registros no banco pensei que iria ter que alterar 1 a 1 rsrsrsrsrs
Muito obrigado cara me ajudou bastante!!!
Valeu João!! Era justamente o que precisavamos!
Descobri o strtoupper.
muito bom esta função que já vem embutida no php.
Sim, fiz a funcao quando o strupper nao atendia. ;)
Muito bom o seu post viu cara.
Valeu mesmo.