Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vertin

Função que converte letras para maiúsculas com acentos

Recommended Posts

Galera, estou com um problema.

 

Tive a necessidade de usar uma função pra converter letras pra maiúsculas, já que só o strtoupper não convertia os queridos acentos que a nossa lingua tem.

 

a função que uso é esta:

 

<?php
function upper ($str) {
$LATIN_UC_CHARS = "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ°°ª";
$LATIN_LC_CHARS = "àáâãäåæçèéêëìíîïðñòóôõöøùúûüý°ºª";
$str = strtr ($str, $LATIN_LC_CHARS, $LATIN_UC_CHARS);
$str = strtoupper($str);
return $str;
}
?>

 

ok, funcionando, inclusive aqueles caracteres especiais "°°ª" tive que que colocar porque eles estavam se transformando em outro caractere estranho.

 

Mas enfim, o problema que encontrei é que quando eu digito no campo que uso esta função a letra "Ú", ele transforma ela em "Ê", e quando digito ú, ele transforma nisso: ð

 

Por exemplo, se quero digitar JÚNIOR, ele transforma em JÊNIOR.

 

Já tentei arrumar e não consegui, alguém tem idéia de como arrumar esse erro?

 

Desde já, obrigado.

 

Héverton

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está usando o arquivo em Uft8 ou ISO-8859 ???

tente passar o arquivo para ANSI ou ISO-8859-1

 

use essa função caso queira manter em utf8

 

function utf8($texto){ $acentos = array("á", "à", "â", "ã", "ä", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "õ", "ö", "ú", "ù", "û", "ü", "ç", "Á", "À", "Â", "Ã", "Ä", "É", "È", "Ê", "Ë", "Í", "Ì", "Î", "Ï", "Ó", "Ò", "Ô", "Õ", "Ö", "Ú", "Ù", "Û", "Ü", "Ç"); $utf8 = array("á","à ","â","ã","ä","é","è","ê","ë","í","ì","î","ï","ó","ò","ô","õ","ö","ú","ù","û","ü","ç","Ã","À","Â","Ã","Ä","É","È","Ê","Ë","Ã","ÃŒ","ÃŽ","Ã","Ó","Ã’","Ô","Õ","Ö","Ú","Ù","Û","Ãœ","Ç"); $result = str_replace($utf8, $acentos, $texto); return $result; }

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca no inicio do arquivo

//define a codificação de caracteres
header("Content-Type: text/html; charset=ISO-8859-1",true);

 

e depois use a função strtoupper

$string = "aeioúéáípagyjk";
echo strtoupper($string);

Compartilhar este post


Link para o post
Compartilhar em outros sites

iconv

 

<?php

echo strtoupper( iconv( 'UTF-8', 'ISO-8859-1//TRANSLIT', 'àáâãäåæçèéêëìíîïðñòóôõöøùúûüý°ºª' ) );

// ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ°ºª

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

obrigado. Mas tentei todas essas formas e sempre tem problema em algum acento.

 

Eu estou achando que o problema é porque meu form é enviado por ajax, com jquery.post

 

alguém tem idéia de como resolver?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no post #2 o @lambrusco perguntou sobre qual encoding está usando

se puder explicar, alguém poderá ajudá-lo

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenho o arquivo php com charset:

 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

e nele tem:

 

$.post("include/ajax-socios-inserir-enderecos.php", {

 

campos aqui

 

}

 

e o arquivo ajax-socios-inserir-enderecos.php

 

não tem charset nenhum.

 

dentro dele tem as variáveis que recebe os valores:

 

if(isset($_POST["bairro"])) $bairro = upper($_POST["bairro"]);

 

 

essa função upper é a que postei no primeiro post, que está em um include.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.