Jump to content


Photo

Função Ereg_replace Não Reconhece Maiúsculas!


  • Faça o login para participar
5 replies to this topic

#1 Ricardo KaNu

Ricardo KaNu

    Novato no fórum

  • Usuários
  • 13 posts

Posted 22/03/2009, 21:04

Olá!

Tenho um sistema de upload no qual eu envio o arquivo para o meu diretorio e a função ereg_replace retira caracteres indesejáveis como acentos e ç...

Até ai beleza, ele funciona perfeitamente com um pequeno problema que eu não consigo resolver:
Quero que a primeira letra seja maiúscula, quando eu envio por exemplo o arquivo "Área.pdf" eu quero que ele vá para o meu servidor como "Area.pdf" apenas sem o acento mas mantendo a primeira letra maiúscula, porém na prática isso não está funcionando, quando envio o arquivo citado acima ele aparece em meu servidor como "area.pdf" TUDO EM MINÚSCULO!

Vou postar o código abaixo, caso alguém saiba o que está errado por favor me dê uma luz, já tentei de tudo mas não consegui!

Segue o código:

[codebox]<?php
// Pega os Dados do Form
$PathForm = $_SERVER['PHP_SELF'];

// Checa se o Diretório existe
if(!file_exists(''))

// Prepara a variável caso o Formulário tenha sido Postado
$Titulo = isset($_POST['titulo']) ? $_POST['titulo'] : FALSE;

$Doc = isset($_FILES['documento']) ? $_FILES['documento'] : FALSE;

$Name = $_FILES['documento']['name'];
$Tmp = $_FILES['documento']['tmp_name'];

// Prepara as Variáveis para configuração do Arquivo
$Config = array();

// Destino da Imagem
$Config ['diretorio'] = '';

// Verifica se é um Documento
if($Doc)
{
// Construo um indece de erros
$Erro = array();

// Checa o mime-type do Arquivo
if(!eregi('(pdf)', $Doc['name']))
{
// Avisa se o Arquivo é inválido
$Erro [] = 'Documento em formato Inválido!';
$Erro [] = 'O Documento deve ser no formato .pdf';
}

// Se não houver erro algum, continua o processo
if(!sizeof($Erro))
{

// Gera o Nome do Documento
// Retira todas as Acentuações
$nome = $Name;
$nome = ereg_replace('[áàâãª]','a',$nome);
$nome = ereg_replace('[ÁÀÂÃ]','A',$nome);
$nome = ereg_replace('[éèê]','e',$nome);
$nome = ereg_replace('[ÉÈÊ]','E',$nome);
$nome = ereg_replace('[óòôõº]','o',$nome);
$nome = ereg_replace('[ÓÒÔÕ]','O',$nome);
$nome = ereg_replace('[úùû]','u',$nome);
$nome = ereg_replace('[ÚÙÛ]','U',$nome);
$nome = str_replace('ç','c',$nome);
$nome = str_replace('Ç','C',$nome);
$nome = ereg_replace(' ','',$nome);
$docNome = strtolower($nome);

// Caminho da onde o Arquivo ficará
$docDir = $Config ['diretorio'] . $docNome;

// Faz o upload do Arquivo
print "<pre>";
if (move_uploaded_file($Tmp, $docDir)) {
print "O arquivo foi carregado com sucesso.\n";
}
print "</pre>";
}
}
if($Doc && !sizeof($Erro))
{
?>
<?php
}
// Mas se ocorreu algum erro ou o Formuláro ainda não foi enviado
else
{
?>
<form method="post" action="<?php echo $PathFrom; ?>" enctype="multipart/form-data">
<div align="left">
<table width="354" border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="3" align="center"> </td></tr>
<tr>
<td colspan="3" align="center">
<p align="left"><b><font face="Verdana" size="2">Enviar Assembléias</font></b></td>
</tr>
<tr>
<td colspan="3" align="center">&nbsp;</td>
</tr>
<tr>
<td colspan="3" align="center">
<p align="left"><font face="Verdana" size="1">OBS: Enviar arquivos somente
no formato <b>pdf</b></font></td>
</tr>
<tr>
<td colspan="3" align="center">&nbsp;</td>
</tr>
<tr><td colspan="3" align="center"> </td></tr>
<?php
if(sizeof($Erro))
{
echo '<tr>';
echo '<td colspan="2" bgcolor="red" align="left">';
echo '<center><u>Ocorreu(ram) o(s) seguinte(s) erro(s):</u></center>';
echo '<br />';
foreach( $Erro as $err)
{
echo ' - '. $err .'<br />';
}
echo '</td></tr>';
}
?>
<tr><td align="center" width="1"> </td>
<td align="left" width="109"> <b><font face="Tahoma" size="1">Selecione o
Arquivo:</font></b></td>
<td align="left" width="244"><font size="1" face="Tahoma">
<input type="file" size="20" name="documento" /></font></td></tr>
<tr><td colspan="3" align="center"> </td></tr>
<tr>
<td colspan="3" align="center">&nbsp;</td>
</tr>
<tr><td colspan="3" align="center"><font size="1" face="Tahoma">
<input type="submit" value="Enviar" style="float: left" /></font></td></tr>
<tr><td colspan="3" align="center"> </td></tr>
<tr><td colspan="3" align="center"> </td></tr>
</table>
</div>
</form>
<?php
}
?>[/codebox]

Valeu!

Abraços ;D

Edição feita por: Ricardo KaNu, 22/03/2009, 22:51.


#2 DiegoCoruja

DiegoCoruja

    12 Horas

  • Usuários
  • 178 posts
  • Sexo:Masculino
  • Localidade:São Vicente - SP
  • Interesses:PROGRAMAÇÃO, WEB DESIGN, ESPORTE,

Posted 23/03/2009, 00:00

Ola amigo,
Coloca na função depois que tirou os acentos

ucfirst($nome)

ele deixa a primeira letra maiuscula!

mais detalhes
http://br.php.net/ucfirst
====================================================
Diego M.
Html, CSS, Javascript, Asp, Asp.net, Php, Sql Server, Mysql, Oracle, VB.NET, VBA
====================================================

#3 Ricardo KaNu

Ricardo KaNu

    Novato no fórum

  • Usuários
  • 13 posts

Posted 23/03/2009, 12:04

Ola amigo,
Coloca na função depois que tirou os acentos

ucfirst($nome)

ele deixa a primeira letra maiuscula!

mais detalhes
http://br.php.net/ucfirst



Consegui!

Fui nas funções relacionadas ali e achei a ucwords que deixa a primeira letra de cada palavra maiúscula, é quase isso que to procurando, agora só preciso fazer uma restrição com o "da, do e de", também gostaria que as palavras "AGE" e "AGO" (parte do nome de atas) fosse toda em maiúscula, entrando também nessa restrição da função...

Muito obrigado por sua resposta Diego, ajudou muito!

E pra quem tá com o mesmo problema segue meu atual código abaixo:

$nome = $Name;        $nome = ereg_replace("[áàâãª]","a",$nome);        $nome = ereg_replace("[ÁÀÂÃ]","A",$nome);        $nome = ereg_replace("[éèê]","e",$nome);        $nome = ereg_replace("[ÉÈÊ]","E",$nome);        $nome = ereg_replace("[íì]","I",$nome);        $nome = ereg_replace("[ÍÌ]","I",$nome);        $nome = ereg_replace("[óòôõº]","o",$nome);        $nome = ereg_replace("[ÓÒÔÕ]","O",$nome);        $nome = ereg_replace("[úùû]","u",$nome);        $nome = ereg_replace("[ÚÙÛ]","U",$nome);        $nome = str_replace("ç","c",$nome);        $nome = str_replace("Ç","C",$nome);        $nome = ereg_replace(" "," ",$nome);        $docNome = strtolower($nome);		$docNome = ucwords($docNome);                      // Caminho da onde o Arquivo ficará        $docDir = $Config ['diretorio'] . $docNome;

Valeu!

Abraços =D

#4 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 23/03/2009, 12:04

$docNome = strtolower($nome);
Está aí o motivo de tudo ficar minúsculo. ;)
att,
Muller Dias
ex-administrador Fórum WMO

#5 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 23/03/2009, 15:04

justamente como o sem.ponto disse...

estava ficando tudo minúsculo porcausa do strtolower()

mas tá valendo usar como vc fez pois vai que alguma palvra seja AsSim... então usando da forma que deixou:

$docNome = strtolower($nome);
$docNome = ucwords($docNome);

... transforma tudo em minúsculo e depois deixa como vc quer, ou seja o primeiro char de cada palavra em maiúscula.

MAS... acredito que por se tratar de nomes de arquivos e estes, por um padrão e portabilidade, não deveriam ter espaços, dividindo-se em duas palavras, então ucfirst() seria mais indicado do que ucwords()

Outra coisa...

O PR disponibilizou uma função para facilitar esse lance de retirar acentos ao invés de fazer como vc fez.
e tbm disponibilizou outra função que faz um filtro entre preposições e/ou artigos pré-definidos... para que vc possa trabalhar melhor com De, Do A, O, E, etc...

De uma olhada nisso:

Remove Acento

Filtra preposições e/ou o que vc colocar no array para ser filtrado

(y)Até mais

#6 Ricardo KaNu

Ricardo KaNu

    Novato no fórum

  • Usuários
  • 13 posts

Posted 23/03/2009, 15:05

$docNome = strtolower($nome);
Está aí o motivo de tudo ficar minúsculo. ;)


Exatamente!

Olhei bem pro código e pesquisei sobre esta função strtolower e vi que este era o problema!

Valeu pela resposta velho

Abração xD




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq