ezequielg 1 Denunciar post Postado Dezembro 19, 2007 Olá pessoal! Estou usando o código abaixo para remover acentos do meu texto e funciona perfeitamente // Remove acentos sobre a string $string = ereg_replace( "[ÁÀÂÃÄ]", "A", $string); $string = ereg_replace( "[áàâãäª]", "a", $string); $string = ereg_replace( "[ÉÈÊË]", "E", $string); $string = ereg_replace( "[éèêë]", "e", $string); $string = ereg_replace( "[ÍÌÎÏ]", "I", $string); $string = ereg_replace( "[íìîï]", "i", $string); $string = ereg_replace( "[ÓÒÔÕÖ]", "O", $string); $string = ereg_replace( "[óòôõöº]", "o", $string); $string = ereg_replace( "[ÚÙÛÜ]", "U", $string); $string = ereg_replace( "[úùûü]", "u", $string); $string = str_replace( "Ç", "C", $string); $string = str_replace( "ç", "c", $string); // Remove acentos $string = str_replace( "´", "", $string ); $string = str_replace( "`", "", $string ); $string = str_replace( "~", "", $string ); $string = str_replace( "^", "", $string ); $string = str_replace( "¨", "", $string ); Decidi transformar este código em uma função e o código, dentro da função. Até aí tudo bem. Em seguida coloquei ele como INCLUDE e não funciona mais. function remove_acentos( $string ) { // Remove acentos sobre a string $string = ereg_replace( "[ÁÀÂÃÄ]", "A", $string); $string = ereg_replace( "[áàâãäª]", "a", $string); $string = ereg_replace( "[ÉÈÊË]", "E", $string); $string = ereg_replace( "[éèêë]", "e", $string); $string = ereg_replace( "[ÍÌÎÏ]", "I", $string); $string = ereg_replace( "[íìîï]", "i", $string); $string = ereg_replace( "[ÓÒÔÕÖ]", "O", $string); $string = ereg_replace( "[óòôõöº]", "o", $string); $string = ereg_replace( "[ÚÙÛÜ]", "U", $string); $string = ereg_replace( "[úùûü]", "u", $string); $string = str_replace( "Ç", "C", $string); $string = str_replace( "ç", "c", $string); // Remove acentos $string = str_replace( "´", "", $string ); $string = str_replace( "`", "", $string ); $string = str_replace( "~", "", $string ); $string = str_replace( "^", "", $string ); $string = str_replace( "¨", "", $string ); return $string; } include("remove.php"); // Texto com acentos $string = "Vestidinho preto é 1º lugar na lista de roupas mais importantes da história."; // Adaptando o titulo para a URL $string = remove_acentos($string); echo $string; Compartilhar este post Link para o post Compartilhar em outros sites
Dórian Conde Langbeck 0 Denunciar post Postado Dezembro 19, 2007 troca return $string; por echo $string; em seguida troca $string = remove_acentos($string); echo $string; por remove_acentos($string); se ele fizer isso a nao vai perder a possibilidade de retorno e naum vai conseguir, se necessario, fazer analizes sobre a string ou armazenar no db... ezequielg... mostra aew como você ta chamando o include... posta aew tbm se tiver dando algum aviso de erro abraços http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 20, 2007 vi no comentário do código que o valor vai para a URL. Para isso há urlencode() e urldecode(). Mas siga o conselho do Dórian Conde Langbeck: diga qual é o problema, se aparece erro. Compartilhar este post Link para o post Compartilhar em outros sites
ezequielg 1 Denunciar post Postado Dezembro 20, 2007 Obrigado aos amigos Help, Dórian e Beraldo. Help, não posso exibir direto a string e sim armazená-la pois vou precisar dela novamente. Seguindo ao conselho do Dórian, segue abaixo os códigos. remove.php <? function remove_acentos( $string ) { // Remove acentos sobre a string $string = ereg_replace( "[ÁÀÂÃÄ]", "A", $string); $string = ereg_replace( "[áàâãäª]", "a", $string); $string = ereg_replace( "[ÉÈÊË]", "E", $string); $string = ereg_replace( "[éèêë]", "e", $string); $string = ereg_replace( "[ÍÌÎÏ]", "I", $string); $string = ereg_replace( "[íìîï]", "i", $string); $string = ereg_replace( "[ÓÒÔÕÖ]", "O", $string); $string = ereg_replace( "[óòôõöº]", "o", $string); $string = ereg_replace( "[ÚÙÛÜ]", "U", $string); $string = ereg_replace( "[úùûü]", "u", $string); $string = str_replace( "Ç", "C", $string); $string = str_replace( "ç", "c", $string); // Remove acentos $string = str_replace( "´", "", $string ); $string = str_replace( "`", "", $string ); $string = str_replace( "~", "", $string ); $string = str_replace( "^", "", $string ); $string = str_replace( "¨", "", $string ); return $string; } ?> index.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="pt"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <? // Remove acentos include("remove.php"); // String com acento $string = "áà éè ìí òó ùú ç"; // Removendo os acentos da string $string = remove_acentos($string); // String sem acento echo $string; ?> </body> </html> Com base nos códigos acima, temos este resultado. String de entrada áà éè ìí òó ùú ç String de saída áà éè ìí òó ùú ç Nota-se que os acentos permanecem. O que eu fico intrigado é que se eu pegar a função que está como include e colocar no arquivo index.php, vai funcionar normalmente. Veja o exemplo abaixo, apenas juntei os dois códigos em um único arquivo. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="pt"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <? function remove_acentos( $string ) { // Remove acentos sobre a string $string = ereg_replace( "[ÁÀÂÃÄ]", "A", $string); $string = ereg_replace( "[áàâãäª]", "a", $string); $string = ereg_replace( "[ÉÈÊË]", "E", $string); $string = ereg_replace( "[éèêë]", "e", $string); $string = ereg_replace( "[ÍÌÎÏ]", "I", $string); $string = ereg_replace( "[íìîï]", "i", $string); $string = ereg_replace( "[ÓÒÔÕÖ]", "O", $string); $string = ereg_replace( "[óòôõöº]", "o", $string); $string = ereg_replace( "[ÚÙÛÜ]", "U", $string); $string = ereg_replace( "[úùûü]", "u", $string); $string = str_replace( "Ç", "C", $string); $string = str_replace( "ç", "c", $string); // Remove acentos $string = str_replace( "´", "", $string ); $string = str_replace( "`", "", $string ); $string = str_replace( "~", "", $string ); $string = str_replace( "^", "", $string ); $string = str_replace( "¨", "", $string ); return $string; } // String com acento $string = "áà éè ìí òó ùú ç"; // Removendo os acentos da string $string = remove_acentos($string); // String sem acento echo $string; ?> </body> </html> Com base na unificação dos códigos, temos este exemplo String de entrada áà éè ìí òó ùú ç String de saída aa ee ii oo uu c Nota-se que os acentos foram removidos. Não entendo o que acontece. Até o momento isto está muito sinistro. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 20, 2007 index.php e remover.php estão no mesmo diretório? Troque include() por require(). Assim, se houver problemas para encontrar o arquivo, a execução será encerrada. Também coloque isto no topo da index.php: PHP ini_set('display_errors', 1);error_reporting(E_ALL); Compartilhar este post Link para o post Compartilhar em outros sites
ezequielg 1 Denunciar post Postado Dezembro 20, 2007 Beraldo, os arquivos estão sim no mesmo diretório. Troquei o include() por require() e acrescentei as linhas que você sugeriu. Não deu nenhum erro, porém a acentuação permanece. Compartilhar este post Link para o post Compartilhar em outros sites
ezequielg 1 Denunciar post Postado Dezembro 20, 2007 Galera, não consegui resolver o problema ainda, na verdade, não vejo problema algum, porém a função não funciona quando chamado em um include(). Se alguém tiver uma solução dá um toque. Compartilhar este post Link para o post Compartilhar em outros sites
Dórian Conde Langbeck 0 Denunciar post Postado Dezembro 21, 2007 aqui o codigo funciona normalzao... tanto diretamente quanto pelo include (require tbm funcionou)... abraços... http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif Compartilhar este post Link para o post Compartilhar em outros sites
madeinnordeste 0 Denunciar post Postado Julho 2, 2008 Tenho um problema um tanto estranho tbm ... Pego uma variavel via $_GET, e por sinal e convertida como se fosse atraves da funcao urlencode(); Por exemplo, ao enviar a variavel keyword com o valor igual a kátia, tenho na url http://www....&keyword=k%C3%A1tia Até ai tudo bem ! depois de recuperar essa varivel em um arquivo php, eu tenho remover os acentos dela, pra que fique 'katia'. Uso a funcao que tem nesse tópico mas o resultado é 'kAatia', percebi que ele poe um A ( A maiusculo ) antes de qualquer acento. Alguem já passou por isso ? []´s Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Julho 2, 2008 E você usa urldecode() antes de retirar os acentos para voltar ao estado normal? :huh: Compartilhar este post Link para o post Compartilhar em outros sites