Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
boa noite estou tendo um pqno problema que ao retirar acentos e espaços de uma string ela aparece com o U no lugar de ã
caso possam me indicar onde esotu falhando agradeço
$cidade = ereg_replace("[^a-zA-Z0-9_.]","",strtr($cidade,"áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ","aaaaeeiooouucAAAAEEIOOOUUC"));
Só para avisar:
Warning
This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
http://mx.php.net/manual/en/function.ereg-replace.php
A função ereg_replace e todas as outros que começam com o prefixo "ereg_" estão obsoletas. Use as funções preg_replace, preg_match, etc. no lugar. Você pode usar as funções PCRE (preg_) exatamente como você usa POSIX (ereg_), embora na parte de regexp tenha algumas diferenças. Então, se o código do Daniel_Moraes funcionou, substitua "ereg_" por "preg_".
eu tinha esse script antigo nem sabia disso mais tudo bem eu altero :D obrigado.
ainda nao ficou como devia
Fiz um código aqui rapidinho e funcionou. Não estou satisfeito com ele pois é preciso desmontar e montar novamente o nome da cidade, mas vou postar assim mesmo.
Código:
$cidade = "São João É Àguas òleo ìnsípido caiçara úùbuá";
// Separa o ascento da letra
$cidade = iconv('UTF-8', 'ASCII//TRANSLIT', $cidade);
// Divida cada palavra da cidade
$cidade = explode(" ",$cidade);
// Remove todos os caracteres que não sejam letras
$cid2 = array();
foreach ($cidade as $cid) {
$cid2 []= preg_replace("[\W]", "", $cid);
}
// Monta novamente o nome da cidade
$cidade = implode(" ", $cid2);
echo $cidade;
Saída:
Sao Joao E Aguas oleo insipido caicara uubua
maravilha agora ficou supimpa no final so add a funcao do php para unir strings o str_replace... RESOLVIDO
Tente isso.
<?php
$cidade = ' São Paulo ';
$cidade = trim(preg_replace('/ +/',' ', $cidade));
$cidade = strtr(($cidade),"áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ","aaaaeeiooouucAAAAEEIOOOUUC");
print $cidade;
?>Pode ficar ainda mais supimpa...:
O exemplo acima preserva o caractere '_' ("underscore", "underline" ou "sublinha").
Neste isso foi corrigido e de quebra ainda ficou mais simples e mais barato:
function remove_acentos($str) {
// Separa o ascento da letra
$str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
// Remove tudo que não seja caractere alfabético ou espaço em branco
$str = preg_replace("/[^[:alpha:]\s]/i", "", $str);
/* Se você quiser preservar outro caractere, basta colocá-lo antes do ']'.
Se não quiser preservar espaços em branco, remova o '\s' */
return $str;
}
$cidade = remove_acentos("Sã~rf-=+)_(# João É Àguas òleo ìnsípido caiçara úùbuá555");
echo $cidade; // Sarf Joao E Aguas oleo insipido caicara uubua
A função ta errada amigo tente usar isso :