Ir para conteúdo

POWERED BY:

Arquivado

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

Antonio Jorge

Tem jeito de diminuir esse código?

Recommended Posts

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">';
				 }
if(preg_match("/\.mp4/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/mp3.png">';
				 }
if(preg_match("/\.apk/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/apk.png">';
				 }
if(preg_match("/\.pdf/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/pdf.png">';
				 }
if(preg_match("/\.jar/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/jar.png">';
				 }
if(preg_match("/\.doc/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/doc.png">';
				 }
if(preg_match("/\.xls/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/xls.png">';
				 }
if(preg_match("/\.rar/i","$nome")){
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">';
				 }
if(preg_match("/\.7z/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/7z.png">';
				 }
if(preg_match("/\.mid/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/mid.png">';
				 }
if(preg_match("/\.txt/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/txt.png">';
				 }
if(preg_match("/\.sis/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/sis.png">';
				 }
if(preg_match("/\.jpg/i","$nome")){
echo '<img src="http://4shared.tectonny.com/icone.gif">';
}
if(preg_match("/\.bmp/i","$nome")){
echo '<img src="http://4shared.tectonny.com/icone.gif">';
}
if(preg_match("/\.png/i","$nome")){
echo '<img src="http://4shared.tectonny.com/icone.gif">';
}
if(preg_match("/\.exe/i","$nome")){
echo '<img src="https://static.4shared.com/icons/32x32/exe.png">';
}
if(preg_match("/\.mpg/i","$nome")){
echo '<img src="http://4shared.tectonny.com/icone.gif">';
}
if(preg_match("/\.ipa/i","$nome")){
echo '<img src="https://static.4shared.com/icons/32x32/ipa.png">';
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha não sei como é o seu controle para os tipos, mas se é só para mostrar o ícone conforme o tipo, use assim:

 

$extensao = explode('.',$nome);
echo '<img src="http://static.4shared.com/icons/32x32/'.end($extensao).'.png">';

Compartilhar este post


Link para o post
Compartilhar em outros sites

$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]]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

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">';
				 }
if(preg_match("/\.mp4/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/mp3.png">';
				 }
if(preg_match("/\.apk/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/apk.png">';
				 }
if(preg_match("/\.pdf/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/pdf.png">';
				 }
if(preg_match("/\.jar/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/jar.png">';
				 }
if(preg_match("/\.doc/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/doc.png">';
				 }
if(preg_match("/\.xls/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/xls.png">';
				 }
if(preg_match("/\.rar/i","$nome")){
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">';
				 }
if(preg_match("/\.7z/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/7z.png">';
				 }
if(preg_match("/\.mid/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/mid.png">';
				 }
if(preg_match("/\.txt/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/txt.png">';
				 }
if(preg_match("/\.sis/i","$nome")){
echo '<img src="http://static.4shared.com/icons/32x32/sis.png">';
				 }
if(preg_match("/\.jpg/i","$nome")){
echo '<img src="http://4shared.tectonny.com/icone.gif">';
}
if(preg_match("/\.bmp/i","$nome")){
echo '<img src="http://4shared.tectonny.com/icone.gif">';
}
if(preg_match("/\.png/i","$nome")){
echo '<img src="http://4shared.tectonny.com/icone.gif">';
}
if(preg_match("/\.exe/i","$nome")){
echo '<img src="https://static.4shared.com/icons/32x32/exe.png">';
}
if(preg_match("/\.mpg/i","$nome")){
echo '<img src="http://4shared.tectonny.com/icone.gif">';
}
if(preg_match("/\.ipa/i","$nome")){
echo '<img src="https://static.4shared.com/icons/32x32/ipa.png">';
}
else {
echo '<img src="http://4shared.tectonny.com/padrao.gif">';
}

Até deu certo, quando não tem icone na lista aparece o ícone padrão, mas também aparece o icone padrão em todos os icone. O que eu errei nesse "else"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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);

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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));
}

No caso de necessitar de aumentar, esse código realmente não é amigável, podemos melhorá-lo:

 

<?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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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);
}

Retorno

 

<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">

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.