Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Eliminar acentos "caracteres" na hora do upload


O kriok

Pergunta

Olá gente. è possível eliminar os acentos ou qualquer outro tipo de carcatere no momento que está sendo feito o upload de um arquivo qualquer ?

Exemplo: Tenho um formulário de upload onde o usuário pode upar qualquer arquivo e bem ao lado tem um pequeno script que listas os arquivos upados deste usuário. Bem tudo funciona perfeitamente. Mas eu preciso de uma função para eliminar os caracteres ou acentuação caso o arquivo que o usuário fizer upload contenha algum .. Pois se por exemplo ele upar um arquivo "cópia.pdf" na hora que ele lista bem ao lado quando clicado no linque ele não encontra o mesmo só encontraria se tivesse "copia.pdf" ou seja sem acento.... Vou postar abaixo na seguinte order .... Formulário para upload .... página que faz o upload .... Script que lista os documentos no diretório do próprio usuário

< FORMULÁRIO DE UPLOAD >

<table width="178" cellspacing="0" cellpadding="0"><tr><td height="103" align="center" valign="top"><form action="upload.php" method="post" enctype="multipart/form-data"><table width="74%" cellpadding="0" cellspacing="1" bgcolor="#A5D277"><tr><td width="322"><table width="100%" border="0" align="center" cellpadding="0" cellspacing="0"><tr align="center" valign="middle" bgcolor="#A5D277"><td height="25" colspan="2"><strong><font color="#E2E2E2" size="3" face="Arial, Helvetica, sans-serif"><font color="#FFFFFF" face="Arial">• Anexar documentos •</font></font></strong></td></tr><tr bgcolor="#FFFFCC"> <td width="130" align="left" valign="middle" bgcolor="#FFFFCC"><font color="#000000"><strong><font color="#669900" size="2" face="Courier New, Courier, mono">Usuário:</font></strong></font></td>

<td width="221"><input type="radio" name="select_dir" value="diretorio" checked /><select name="diretorio" id="meuselect" style="color:#006666;font-size:9px;width:50px;height:17px;background-color:#FFFFFF;border:0px solid #DADADA;border-bottom:0px solid #DADADA;"><option value="diretorio-do-usuario">diretorio-do-usuario</select></td></tr><tr bgcolor="#FFFFCC"><td width="130" nowrap bgcolor="#FFFFCC"><font color="#000000"><strong><font face="Courier New, Courier, mono"><font color="#669900" size="2">Arquivo:</font></font></strong></font></td><td><input type="file" size=12 name="file" style="color:#006666;font-size:9px;" /></td></tr><tr bgcolor="#FFFFCC"> <td width="130" align="center" valign="top" nowrap bgcolor="#FFFFCC"><font color="#FFFFFF" size="2" face="Geneva, Arial, Helvetica, sans-serif"><strong> <input name="submit" value="Enviar >>" type="image" src="img/bt-enviar.jpg" width="60" height="16" /></strong></font></td> <td><font color="#FFFFFF" size="2" face="Geneva, Arial, Helvetica, sans-serif"><strong></strong></font></td></tr></table></td></tr></table><input type="hidden" name="MAX_FILE_SIZE" value="1000000" /></form></td></tr></table>

< FIM >

< PÁGINA QUE FAZ O UPLOAD >

<?php

// Altera o umask para a criação do diretório

$umask_anterior = umask(0);

if ($_FILES["file]["error"] === 0)

{

@ mkdir($_POST["{$_POST["select_dir"]}"],0777);

@ move_uploaded_file($_FILES["file"]["tmp_name"],"./{$_POST["{$_POST["select_dir"]}"]}/{$_FILES["file"]["name"]}");

?>

&lt;script>

window.alert('Arquivo carregado com sucesso!!');

history.back();

</script>

<?

}

else

{

switch ($_FILES["file"]["error"])

{

case 1:

$msg_err = "O arquivo no upload é maior do que o limite \ndefinido em upload_max_filesize no php.ini!";

break;

case 2:

$msg_err = "O arquivo ultrapassa o limite de tamanho em \nMAX_FILE_SIZE que foi especificado no formulário!";

break;

case 3:

$msg_err = "O upload do arquivo foi feito parcialmente!";

break;

case 4:

$msg_err = "Não foi feito o upload do arquivo. Tente novamente!!!";

break;

default:

$msg_err = "Ocorreu um erro.\nVerifique qual o problema!!!";

}

?>

&lt;script>

window.alert('<?=$msg_err?>');

history.back();

</script>

<?

umask($umask_anterior);

}

?>

< F I M >

< SCRIPT QUE LISTA OS DOCUMENTOS DO RESPECTIVO DIRETÓRIO DO USUÁRIO >

<?php

if(isset($_GET['id])){@unlink($_GET['id']);}foreach (glob("diretorio-do-usuario/*") as $arquivo) {echo "<div id='esq' ><a href='$arquivo' target='_blank' >".substr($arquivo,0,-4)."</a.></div><div align='right' ><a href='?id=$arquivo'><font color='#FFFFCC'><img src='img/EXCLUIR.jpg' width='20' height='20' ></font></a> " . "\n</div>";

}

?>

< F I M >

Editado por O kriok
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Encontrei também essa funçãozinha....

function tiracento($texto){
    $trocarIsso = array('à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','não','ò','ó','ô','õ','ö','ù','ü','ú','ÿ','À','Á','Â','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','não','Ò','Ó','Ô','Õ','Ö','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',);
    $titletext = str_replace($trocarIsso, $porIsso, $texto);
    return $titletext;
}

Editado por Andréa Carvalho
Link para o comentário
Compartilhar em outros sites

  • 0

Me deram uma ajuda e eu cheguei neste script q postei aqui . Só que tem dois problemas , ele está alterando o nome original do arquivo e a extensão do mesmo ....

Como eu preciso que seja feito

Exemplo correto:

Antes do upload -> é um arquivo com espaços.pdf

Após o upload feito -> e_um_arquivo_com_espacos.pdf

Como meu atual script está fazendo o upload

Exemplo errado:

Antes do upload -> é um arquivo com espaços.pdf

Após o upload feito -> CxampptmpphpD22.tmp

<?php


$umask_anterior = umask(0);

if ($_FILES["file"]["error"] === 0)
{
$novoNome = ereg_replace("[^a-zA-Z0-9_.]", "",strtr($_FILES["file"]["tmp_name"], "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ","aaaaeeiooouucAAAAEEIOOOUUC_"));

@ mkdir($_POST["{$_POST["select_dir"]}"],0777);
@ move_uploaded_file($_FILES["file"]["tmp_name"],"./{$_POST["{$_POST["select_dir"]}"]}/{$novoNome}");
?>
&lt;script>
window.alert('Arquivo carregado com sucesso!!');
history.back();
</script>
<?
}
else
{
switch ($_FILES["file"]["error"])
{
case 1:
$msg_err = "O arquivo no upload é maior do que o limite \ndefinido em upload_max_filesize no php.ini!";
break;
case 2:
$msg_err = "O arquivo ultrapassa o limite de tamanho em \nMAX_FILE_SIZE que foi especificado no formulário!";
break;
case 3:
$msg_err = "O upload do arquivo foi feito parcialmente!";
break;
case 4:
$msg_err = "Não foi feito o upload do arquivo. Tente novamente!!!";
break;
default:
$msg_err = "Ocorreu um erro.\nVerifique qual o problema!!!";
}
?>
&lt;script>
window.alert('<?=$msg_err?>');
history.back();
</script>
<?

umask($umask_anterior);
}
?>[/codebox]

Link para o comentário
Compartilhar em outros sites

  • 0

Retirado do manual:

$_FILES['userfile']['name'] -> O nome original do arquivo no computador do usuário.

$_FILES['userfile']['tmp_name'] -> O nome temporário do arquivo, como foi guardado no servidor.

No teu script

$novoNome = ereg_replace("[^a-zA-Z0-9_.]", "",strtr($_FILES["file"]["tmp_name"], "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ","aaaaeeiooouucAAAAEEIOOOUUC_"));

Você tá mandando o $novoNome com o tmp_name, logo, é por isso que o nome está estranho. altera tmp_name para name.

Link para o comentário
Compartilhar em outros sites

  • 0

Pois é! Obrigado Eserra ..estou com outro problema eu até procurei lá nos manuais do php mas não consegui entender porque está acontecendo isso . Mas ele está substituindo todas as letras com acentos e cedilha pela letra "A" ao invez de eliminar os acentos sem trocar a letra . <_<

Vi que :mellow:

"strtr" substitui os caracteres acentuados pelos não acentuados.

e

"ereg_replace" remove todos os caracteres que não são letras.

Fiz várias alterações nos dois ,porém não sei onde estou errando .Mas só resultaram em erro ou quando ele faz o upload, acaba eliminando letras do nome original do arquivo.



<?php


$umask_anterior = umask(0);

if ($_FILES["file"]["error"] === 0)
{
$novoNome = ereg_replace("[^a-zA-Z0-9_.]", "",strtr($_FILES["file"]["name"], "áàãâéêíóôõúüçÁÀÃÂÉÊÍÓÔÕÚÜÇ ","aaaaeeiooouucAAAAEEIOOOUUC_"));

@ mkdir($_POST["{$_POST["select_dir"]}"],0777);
@ move_uploaded_file($_FILES["file"]["tmp_name"],"./{$_POST["{$_POST["select_dir"]}"]}/{$novoNome}");
?>
&lt;script>
window.alert('Arquivo carregado com sucesso!!');
history.back();
</script>
<?
}
else
{
switch ($_FILES["file"]["error"])
{
case 1:
$msg_err = "O arquivo no upload é maior do que o limite \ndefinido em upload_max_filesize no php.ini!";
break;
case 2:
$msg_err = "O arquivo ultrapassa o limite de tamanho em \nMAX_FILE_SIZE que foi especificado no formulário!";
break;
case 3:
$msg_err = "O upload do arquivo foi feito parcialmente!";
break;
case 4:
$msg_err = "Não foi feito o upload do arquivo. Tente novamente!!!";
break;
default:
$msg_err = "Ocorreu um erro.\nVerifique qual o problema!!!";
}
?>
&lt;script>
window.alert('<?=$msg_err?>');
history.back();
</script>
<?

umask($umask_anterior);
}
?>[/codebox]

Link para o comentário
Compartilhar em outros sites

  • 0

Agora funcionou !

<?php


$umask_anterior = umask(0);

if ($_FILES["file"]["error"] === 0)
{
$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','O','U','U','U','Y','_','',);
$novoNome = str_replace($trocarIsso, $porIsso, $_FILES["file"]["name"]);

@ mkdir($_POST["{$_POST["select_dir"]}"],0777);
@ move_uploaded_file($_FILES["file"]["tmp_name"],"./{$_POST["{$_POST["select_dir"]}"]}/{$novoNome}");
?>
&lt;script>
window.alert('Arquivo carregado com sucesso!!');
history.back();
</script>
<?
}
else
{
switch ($_FILES["file"]["error"])
{
case 1:
$msg_err = "O arquivo no upload é maior do que o limite \ndefinido em upload_max_filesize no php.ini!";
break;
case 2:
$msg_err = "O arquivo ultrapassa o limite de tamanho em \nMAX_FILE_SIZE que foi especificado no formulário!";
break;
case 3:
$msg_err = "O upload do arquivo foi feito parcialmente!";
break;
case 4:
$msg_err = "Não foi feito o upload do arquivo. Tente novamente!!!";
break;
default:
$msg_err = "Ocorreu um erro.\nVerifique qual o problema!!!";
}
?>
&lt;script>
window.alert('<?=$msg_err?>');
history.back();
</script>
<?

umask($umask_anterior);
}
?>[/codebox]

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...