Lucios 0 Denunciar post Postado Janeiro 3, 2010 Senhores(as), Tenho um problema que não consigo resolver. Fiz uma página para tratar dados de upload. Minha intenção é tirar os acentos e caracteres especiais do nome do arquivo enviado. Porém a função str_replace() não funciona na variável $_FILES["arquivo"]["name"]. Para ser mais claro: function tiracento($texto){ $trocarIsso= array('à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ñ','ò','ó','ô','õ','ö','ù','ü','ú','ÿ', 'À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ñ','Ò','Ó','Ô','Õ','Ö','O','Ù','Ü','Ú','Ÿ'); $porIsso = array('a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','n','o','o','o','o','o','u','u','u','y', 'A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','N','O','O','O','O','O','0','U','U','U','Y'); [color="#8B0000"]$titletext = str_replace($trocarIsso, $porIsso, $texto);[/color] return $titletext; } $nome_1 = strtolower($_FILES["userfile"]["name"]); //o arquivo enviado é Canção.pdf $nome = tiracento($nome_1); [color="#8B0000"]echo $nome; // retorna canção.pdf[/color] //para provar que a função funciona $teste_1 = strtolower("Canção.pdf"); $teste = tiracento($teste_1); [color="#8B0000"]echo $teste; // retorna cancao.pdf (como deveria ser acima)[/color] Alguém sabe porque a função str_replace() não funciona para a variável $_FILES[]? Obrigado pela atenção. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Janeiro 3, 2010 Melhor deixar a variável só com string: $nomearquivo = $_FILES["userfile"]["name"]; echo strtolower($nomearquivo); Compartilhar este post Link para o post Compartilhar em outros sites
Lucios 0 Denunciar post Postado Janeiro 3, 2010 Melhor deixar a variável só com string: $nomearquivo = $_FILES["userfile"]["name"]; echo strtolower($nomearquivo); Primeiro de tudo, obrigado Alaerte! Mas ainda não adianta :( $nome_1 = $_FILES["userfile"]["name"];// nome do arquivo: Canção.pdf $nome = strtolower($nome_1); $nome = tiracento($nome); echo $nome; // retorna canção.pdf //Tentei tirar o "ã" isoladamente e também não funcionou: $nome = str_replace("ã","a",$nome); echo $nome; // retorna canção.pdf a função strtolower() funciona perfeitamente, mas a str_replace() ainda não faz efeito. Isso pra mim é um mistério. Por favor, alguém sabe pq??????? Compartilhar este post Link para o post Compartilhar em outros sites
Lucios 0 Denunciar post Postado Janeiro 3, 2010 Descobri :P Pessoal, fica ai a dica, quando alguma coisa parecida acontecer, antes de trabalhar a string, coloque a função mágica utf8_encode($tring); na frente. Por exemplo, no meu caso ficou assim: $nome_1 = $_FILES["userfile"]["name"];// nome do arquivo: Canção.pdf utf8_encode($nome_1); $nome = strtolower($nome_1); $nome = tiracento($nome); echo $nome; // retorna cancao.pdf maravilha!! Obrigado pela atenção. Compartilhar este post Link para o post Compartilhar em outros sites
Eliel Duarte 0 Denunciar post Postado Fevereiro 26, 2015 Muito obrigado, apesar de antigo o Post me ajudou muito ;) Compartilhar este post Link para o post Compartilhar em outros sites