PHP 8.4.2 Released!

basename

(PHP 4, PHP 5, PHP 7, PHP 8)

basenameDevuelve el último componente de nombre de una ruta

Descripción

basename(string $path, string $suffix = ?): string

Dada una cadena que contiene una ruta a un archivo o directorio, esta función devolverá el último componente de nombre.

Nota:

basename() opera nativamente en la entrada de cadena, y no es consciente del actual sistema de archivos, o componentes de ruta como "..".

Precaución

basename() es consciente de su sistema de localidad, así que para ver el nombre base correcto con rutas de caracteres multibyte, la localidad debe coincidir con la establecida con la función setlocale().

Parámetros

path

Una ruta.

En Windows, la barra (/) y la barra invertida (\) se usan como carácter separador de directorio. En otros entornos se usa la barra hacia delante (/).

suffix

Si el nombre del componente termina en suffix éste será recortado también.

Valores devueltos

Devuelve el nombre base de path.

Ejemplos

Ejemplo #1 Ejemplo de basename()

<?php
echo "1) ".basename("/etc/sudoers.d", ".d").PHP_EOL;
echo
"2) ".basename("/etc/sudoers.d").PHP_EOL;
echo
"3) ".basename("/etc/passwd").PHP_EOL;
echo
"4) ".basename("/etc/").PHP_EOL;
echo
"5) ".basename(".").PHP_EOL;
echo
"6) ".basename("/");
?>

El resultado del ejemplo sería:

1) sudoers
2) sudoers.d
3) passwd
4) etc
5) .
6)

Ver también

  • dirname() - Devuelve la ruta de un directorio padre
  • pathinfo() - Devuelve información acerca de la ruta de un fichero

add a note

User Contributed Notes 4 notes

up
53
Anonymous
7 years ago
It's a shame, that for a 20 years of development we don't have mb_basename() yet!

// works both in windows and unix
function mb_basename($path) {
if (preg_match('@^.*[\\\\/]([^\\\\/]+)$@s', $path, $matches)) {
return $matches[1];
} else if (preg_match('@^([^\\\\/]+)$@s', $path, $matches)) {
return $matches[1];
}
return '';
}
up
10
(remove) dot nasretdinov at (remove) dot gmail dot com
16 years ago
There is only one variant that works in my case for my Russian UTF-8 letters:

<?php
function mb_basename($file)
{
return
end(explode('/',$file));
}
><

It is intented for UNIX servers
up
4
KOmaSHOOTER at gmx dot de
19 years ago
If you want the current path where youre file is and not the full path then use this :)

<?php
echo('dir = '.basename (dirname($_SERVER['PHP_SELF']),"/"));
// retuns the name of current used directory
?>

Example:

www dir: domain.com/temp/2005/january/t1.php

<?php
echo('dirname <br>'.dirname($_SERVER['PHP_SELF']).'<br><br>');
// returns: /temp/2005/january
?>

<?php
echo('file = '.basename ($PHP_SELF,".php"));
// returns: t1
?>

if you combine these two you get this
<?php
echo('dir = '.basename (dirname($_SERVER['PHP_SELF']),"/"));
// returns: january
?>

And for the full path use this
<?php
echo(' PHP_SELF <br>'.$_SERVER['PHP_SELF'].'<br><br>');
// returns: /temp/2005/january/t1.php
?>
up
5
swedish boy
15 years ago
Here is a quick way of fetching only the filename (without extension) regardless of what suffix the file has.

<?php

// your file
$file = 'image.jpg';

$info = pathinfo($file);
$file_name = basename($file,'.'.$info['extension']);

echo
$file_name; // outputs 'image'

?>
To Top