Ir para conteúdo

POWERED BY:

Arquivado

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

Lucios

[Resolvido] função str_replace() não funciona

Recommended Posts

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

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

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

×

Informação importante

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