Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
talvez usando outro método, veja como eu uso o ícone para cada tipo de arquivo conforme a string $nome, queria adicionar mais ícones, mas ficar enorme.
if(preg_match("/mp3/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/mp3.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/mp3.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/apk.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/pdf.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/jar.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/doc.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/xls.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/rar.png">';
}
if(preg_match("/\.zip/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/zip.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/7z.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/mid.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/txt.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/sis.png">';
}echo '<img src="http://4shared.tectonny.com/icone.gif">';
}echo '<img src="http://4shared.tectonny.com/icone.gif">';
}echo '<img src="http://4shared.tectonny.com/icone.gif">';
}echo '<img src="https://static.4shared.com/icons/32x32/exe.png">';
}echo '<img src="http://4shared.tectonny.com/icone.gif">';
}echo '<img src="https://static.4shared.com/icons/32x32/ipa.png">';
}$icons = array(
'mp3' => 'http://caminho/para/mp3.png',
'mp4' => 'http://caminho/para/mp4.png',
'jpg' => 'http://caminho/para/jpg.png',
'png' => 'http://caminho/para/png.png',
'pdf' => 'http://caminho/para/pdf.png'
);
preg_match('/\.([^.]*)$/', $nome, $matches);
echo sprintf('<img src="%s">', $icons[$matches[1]]);Ok agradeço, a quem tentou, mas parece que continua grande...
Então pessoal ver tem como me ajudar assim, quando existir a extensão aparece o icone, quando não aparecer aparece um padrão, tem como?
Tentei assim:
if(preg_match("/mp3/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/mp3.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/mp3.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/apk.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/pdf.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/jar.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/doc.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/xls.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/rar.png">';
}
if(preg_match("/\.zip/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/zip.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/7z.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/mid.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/txt.png">';
}echo '<img src="http://static.4shared.com/icons/32x32/sis.png">';
}echo '<img src="http://4shared.tectonny.com/icone.gif">';
}echo '<img src="http://4shared.tectonny.com/icone.gif">';
}echo '<img src="http://4shared.tectonny.com/icone.gif">';
}echo '<img src="https://static.4shared.com/icons/32x32/exe.png">';
}echo '<img src="http://4shared.tectonny.com/icone.gif">';
}echo '<img src="https://static.4shared.com/icons/32x32/ipa.png">';
}echo '<img src="http://4shared.tectonny.com/padrao.gif">';
}Isso não é diminuir, é refatorar, lembre-se disso. O tamanho não importa, importa a qualidade.
O melhor seria encapsular esta lógica visando torná-la reutilizável.
De uma forma bem corrida, consigo fazer isto:
<?php
/**
* Verifica se a extensão do arquivo informada é .mp4.
* Essa função é necessária pois o ícone dos arquivos .mp4 é
* diferente dos outros, pois retorna o ícone do .mp3.
*
* @internal
*
* @param string $extension
* @return bool
*/
function isExtensionMP4($extension) return 'mp4' === $extension;
}
/**
* Verifica se pode-se usar o ícone comum para a extensão de arquivo passada.
*
* @internal
*
* @param string $extension
* @return bool
*/
function hasSimpleIconFor($extension) return in_array($extension, array('jpg', 'bmp', 'png', 'mpg'));
}
/**
* Verifica se pode-se usar um ícone dinâmico para a extensão de arquivo passada.
*
* @internal
*
* @param string $extension
* @return bool
*/
function hasDynamicIconFor($extension) return in_array($extension, array('mp3', 'apk', 'pdf', 'jar', 'doc', 'xls', 'rar', 'zip', '7z', 'mid', 'txt', 'sis', 'exe', 'ipa'));
}
/**
* Retorna o ícone adequado para um arquivo baseando-se em sua extensão.
*
* @internal
*
* @param string $file
* @return string
*/
function getIconUrl($file) $extension = pathinfo($file, PATHINFO_EXTENSION);
if (isExtensionMP4($extension)) {
return 'http://static.4shared.com/icons/32x32/mp3.png';
}
if (hasSimpleIconFor($extension)) {
return 'http://4shared.tectonny.com/icone.gif';
}
if (hasDynamicIconFor($extension)) {
return sprintf('http://static.4shared.com/icons/32x32/%s.png', $extension);
}
return 'http://4shared.tectonny.com/padrao.gif';
}
/**
* Retorna o HTML com a imagem do ícone.
*
* @param string $file
* @return string
*/
function getIconHtml($file) return sprintf('<img src="%s">', getIconUrl($file));
}
Sem os comentários possuímos exatas 40 linhas de código, menos do que o anterior (60) e eliminamos o uso de expressão regular. E para usar isso basta:
<?php
getIconHtml($arquivo);
No seu caso era a variável $nome, então basta substituir, ficando assim:
<?php
getIconHtml($nome);Muito bom o seu código, gostei mesmo, vou testar e dar retorno, mas quanto else informa um ícone padrão quando não se enquadra?
Não é necessário um else uma vez que o return quebra a função. O else não é necessário.
O Enrico escapou de uma boa por não ter colocado código dentro de uma classe, senão seria apedrejado por causa da responsabilidade e acoplamento do código.
lol. Eu fiz isso em 5 minutos, não exija muito de minha pessoa.
Procura sobre css sprite...de nada adiante ter um codigo lindo pra fazer uma coisa, se essa coisa não sair bem feita.
Mas a intenção dele não era usar CSS... talvez ele só irá usar um ícone, daí usar sprite é um tiro no pé.
Tem 14 imagem png de 32x32, mesmo que use só um, não sera um tiro no pé.
Boa noite, o código deu erro na função mp4 tive que tirar do site.
Quando eu perguntei se tem como diminuir é porque eu penso em colocar mais, eu já adicionei mais 6 extensões.
Por isso pensei em algo mais funcional.
Qual seria a media de imagens que aparece na tela ?
Bem, eu sabia que ia dar erro, estava desconfiando de que a mp4 iria usar a mp4 mesmo, basta algumas alterações.
<?php
/**
* Verifica se pode-se usar o ícone comum para a extensão de arquivo passada.
*
* @internal
*
* @param string $extension
* @return bool
*/
function hasSimpleIconFor($extension) return in_array($extension, array('jpg', 'bmp', 'png', 'mpg'));
}
/**
* Verifica se pode-se usar um ícone dinâmico para a extensão de arquivo passada.
*
* @internal
*
* @param string $extension
* @return bool
*/
function hasDynamicIconFor($extension) return in_array($extension, array('mp3', 'mp4', 'apk', 'pdf', 'jar', 'doc', 'xls', 'rar', 'zip', '7z', 'mid', 'txt', 'sis', 'exe', 'ipa'));
}
/**
* Retorna o ícone adequado para um arquivo baseando-se em sua extensão.
*
* @internal
*
* @param string $file
* @return string
*/
function getIconUrl($file) $extension = pathinfo($file, PATHINFO_EXTENSION);
if (hasSimpleIconFor($extension)) {
return 'http://4shared.tectonny.com/icone.gif';
}
if (hasDynamicIconFor($extension)) {
return sprintf('http://static.4shared.com/icons/32x32/%s.png', $extension);
}
return 'http://4shared.tectonny.com/padrao.gif';
}
/**
* Retorna o HTML com a imagem do ícone.
*
* @param string $file
* @return string
*/
function getIconHtml($file) return sprintf('<img src="%s">', getIconUrl($file));
}<?php
/**
* Retorna o ícone adequado para um arquivo baseando-se em sua extensão.
*
* @internal
*
* @param string $file
* @return string
*/
function getIconUrl($file) $extension = pathinfo($file, PATHINFO_EXTENSION);
$icons = array(
'jpg' => 'http://4shared.tectonny.com/icone.gif',
'bmp' => 'http://4shared.tectonny.com/icone.gif',
'png' => 'http://4shared.tectonny.com/icone.gif',
'mpg' => 'http://4shared.tectonny.com/icone.gif',
'mp3' => 'http://static.4shared.com/icons/32x32/mp3.png',
'mp4' => 'http://static.4shared.com/icons/32x32/mp4.png',
'apk' => 'http://static.4shared.com/icons/32x32/apk.png',
'pdf' => 'http://static.4shared.com/icons/32x32/pdf.png',
'jar' => 'http://static.4shared.com/icons/32x32/jar.png',
'doc' => 'http://static.4shared.com/icons/32x32/doc.png',
'xls' => 'http://static.4shared.com/icons/32x32/xls.png',
'rar' => 'http://static.4shared.com/icons/32x32/rar.png',
'zip' => 'http://static.4shared.com/icons/32x32/zip.png',
'7z' => 'http://static.4shared.com/icons/32x32/7z.png',
'mid' => 'http://static.4shared.com/icons/32x32/mid.png',
'txt' => 'http://static.4shared.com/icons/32x32/txt.png',
'sis' => 'http://static.4shared.com/icons/32x32/sis.png',
'exe' => 'http://static.4shared.com/icons/32x32/exe.png',
'ipa' => 'http://static.4shared.com/icons/32x32/ipa.png',
);
if (isset($icons[$extension])) {
return $icons[$extension];
}
return 'http://4shared.tectonny.com/padrao.gif';
}
/**
* Retorna o HTML com a imagem do ícone.
*
* @param string $file
* @return string
*/
function getIconHtml($file) return sprintf('<img src="%s">', getIconUrl($file));
}
Agora é uma chave extensão => url, fácil manutenção, a utilização é a mesma.Vou tentar também...
Função
function imprime_icone($nome) {
if (preg_match("/\.(mp3|mp4|apk|pdf|jar|doc|xls|rar|zip|7z|mid|txt|sis|ipa|exe)$/i", $nome, $ext)) {
echo "<img src=\"http://static.4shared.com/icons/32x32/{$ext[1]}.png\">";
} else if(preg_match("/\.(bmp|png|jpg|mpg)$/i", $nome)){
echo '<img src="http://4shared.tectonny.com/icone.gif">';
} else {
echo '<img src="http://4shared.tectonny.com/padrao.gif">';
}
}
Teste
$test = [
"arquivo.mp3",
"arquivo.mp4",
"arquivo.apk",
"arquivo.pdf",
"arquivo.jar",
"arquivo.doc",
"arquivo.xls",
"arquivo.rar",
"arquivo.zip",
"arquivo.7z",
"arquivo.mid",
"arquivo.txt",
"arquivo.sis",
"arquivo.ipa",
"arquivo.exe",
"arquivo.bmp",
"arquivo.png",
"arquivo.jpg",
"arquivo.mpg"
];
foreach ($test as $nome) {
imprime_icone($nome);
}<img src="http://static.4shared.com/icons/32x32/mp3.png"><img src="http://static.4shared.com/icons/32x32/mp4.png"><img src="http://static.4shared.com/icons/32x32/apk.png"><img src="http://static.4shared.com/icons/32x32/pdf.png"><img src="http://static.4shared.com/icons/32x32/jar.png"><img src="http://static.4shared.com/icons/32x32/doc.png"><img src="http://static.4shared.com/icons/32x32/xls.png"><img src="http://static.4shared.com/icons/32x32/rar.png"><img src="http://static.4shared.com/icons/32x32/zip.png"><img src="http://static.4shared.com/icons/32x32/7z.png"><img src="http://static.4shared.com/icons/32x32/mid.png"><img src="http://static.4shared.com/icons/32x32/txt.png"><img src="http://static.4shared.com/icons/32x32/sis.png"><img src="http://static.4shared.com/icons/32x32/ipa.png"><img src="http://static.4shared.com/icons/32x32/exe.png"><img src="http://4shared.tectonny.com/icone.gif"><img src="http://4shared.tectonny.com/icone.gif"><img src="http://4shared.tectonny.com/icone.gif"><img src="http://4shared.tectonny.com/icone.gif">
Olha não sei como é o seu controle para os tipos, mas se é só para mostrar o ícone conforme o tipo, use assim: