Last active
December 30, 2015 07:39
-
-
Save ivanrosolen/7797439 to your computer and use it in GitHub Desktop.
Criar um jeito em php para retornar apenas o nome do arquivo (sem extensão nem diretórios)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/var/www/public/upload/image.jpeg | |
imagem.01.png | |
/ivan.pdf | |
/var/www/public/upload/imaginação.JPG | |
/var/www/nome bem legal.png | |
ilári iê.gif | |
/opa_ivan.01_03.jpeg | |
swp.ivan.01.12.2013.php | |
/var/www/_windows Like.gif | |
yudi.jPeG | |
Não vale usar o pathinfo($filename, PATHINFO_FILENAME ); porque, teoricamente, é o jeito correto. | |
lleitep3
commented
Dec 5, 2013
Galera esqueceu do basename
:
<?php
function getName($path)
{
return preg_replace('/\.[^.]*$/', '', basename($path));
}
Se preferir considerar .htaccess
e .htpasswd
como nomes de arquivos, ao invés de extensões, pode usar esta:
<?php
function getName($path)
{
return preg_replace('/^([^.].*)\.[^.]*$/', '${1}', basename($path));
}
E se quiser parametrizar:
<?php
function getName($path, $show_dotted_no_ext = false)
{
$regex = ($show_dotted_no_ext?'/^([^.].*)\.[^.]*$/':'/()\.[^.]*$/');
return preg_replace($regex, '${1}', basename($path));
}
E uma alternativa sem regex, usando somente o basename
com o parâmetro suffix:
<?php
function getName($path)
{
$parts = explode('.', $path);
return basename($path, '.' . array_pop($parts));
}
Ricardo, não é que galera esqueceu do basename, é que a questão proposta pelo Ivan seria "criar uma jeito", ao invés de ir para os meios mais tradicionais, por isso talvez o pessoal está seguinte para uma forma, vamos dizer assim, "mais alternativa" de resolver.
Bom, se é esta a proposta, segue uma só com regex, então:
<?php
function getName($path)
{
return preg_replace('/^.*\/(.*)\..*$/', '${1}', "/${path}");
}
Pensa fora da caixa povo
<?php
foreach ($arr as $filename) {
$ivan = end(explode('/',$filename));
echo strstr($ivan, strrchr($ivan,'.'), true).'<br />';
}
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment