Sex, 01 de Outubro de 2010 12:45
Constantemente em projetos web, trabalha-se muito com "Upload de Imagens".
Em um de meus primeiros projetos web, uma das funções do sistema era o Gerenciamento de Imagens.
Neste banco de imagens, ao fazer o upload da imagem, o script responsável por esta ação, antes de salvar a imagem no servidor e gravar seus dados no banco, tinha que trabalhar alguns dados da imagem, como nome, tamanho, largura e altura.
Para trabalhar o nome da imagem, a função basicamente era:
- substituir os caracteres especiais da imagem por caracteres comuns. (Ex.: ç por c, À por a, ü por u, espaço por hífen, etc)...
No banco de dados, eu gravava a url da imagem à partir de um determinado diretório onde elas eram gravadas, mas já com o nome substituído, e consequentemente a extensão da mesma.
Mas quando cheguei neste ponto percebí que, antes de gravar o registro no banco, tinha que descobrir qual era a extensão da imagem.
Poderia ser jpeg, gif, tiff, png, jpg, bmp...
À princípio, a lógica que usei foi a seguinte:
- Conto quantas letras tem o nome da imagem (que no caso nome era nome + extensão)
- Verifico, de trás pra frente no nome da imagem, se tem o caractere ".", e se sim, dalí em diante seria a extensão da imagem, se não, do 5º carectere em diante seria a extensão da imagem.
O script ficou assim:
$qtdeLetras = strlen($nomeImagem) - 4; if (substr($nomeImagem,$qtdeLetras,1) == "."){ $extensao = substr($nomeImagem,$qtdeLetras +1,4); } else { $extensao = substr($nomeImagem,$qtdeLetras,5); }
Testes feitos, tudo OK, pronto!
Mas, não me dei por satisfeito, e fui procurar na documentação do PHP se tinha alguma função que facilitaria o meu trabalho.
Fiz mais algumas pesquisas e conhecí o tal do Explode().
A finalidade desta função é dividir uma string em strings baseando-se em um parâmetro especificado.
(Para saber mais sobre a função explode(), veja este ótimo artigo de Júlio César Martini no Imasters, ou acesse a documentação do PHP)
Depois vi que, se usasse esta função em conjunto com a função end, onde tal funçaõ iria me retornar algum valor à partir do final da string, poderia substituir todo o trabalho de antes por uma linha... e o resultado foi:
$extensao = strtolower(end(explode('.', $nomeImagem)));
Obs.: A função strtolower() é só pra transformar os caracteres de retorno em minúsculo.
Pronto!
Tenho certeza de que esta função, em conjunto com outras, pode facilitar e muito nosso trabalho em certas ocasiões.
Bom, até a próxima.
Falou...
Técnico em Sistemas de Informação, Web Developer e cursando Faculdade de Tecnologia em Banco de Dados, atuo no Desenvolvimento de Sites, Sistemas Web e Desktop desde 2008.
Dentre as tecnologias que trabalho, estão PHP, Java, jQuery, Ajax, Joomla, MySQL, PostgreSQL, Design Patterns, Adobe CS3, Corel, XHTML, CSS e Padrões Web.
Para mais informações sobre desenvolvimentos web e desktop, leia meus artigos, conheça as soluções que ofereço ou entre em contato.