CascadiaPHP 2024

pathinfo

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

pathinfoLiefert Informationen über einen Dateipfad

Beschreibung

pathinfo(string $path, int $flags = PATHINFO_ALL): array|string

pathinfo() gibt Informationen über einen Dateipfad (path) zurück: entweder als assoziatives Array oder als String, abhängig vom Parameter flags.

Hinweis:

Wie die aktuellen Pfadinformationen ermittelt werden können, ist im Abschnitt Vordefinierte Variablen beschrieben.

Hinweis:

pathinfo() verarbeitet lediglich den Eingabestring und kennt weder das tatsächliche Dateisystem noch Pfadkomponenten wie "..".

Hinweis:

Das Zeichen \ wird nur auf Windows-Systemen als Trennzeichen zwischen Verzeichnissen interpretiert. Auf anderen Systemen wird es wie jedes andere Zeichen behandelt.

Achtung

pathinfo() berücksichtigt die Locale-Einstellung. Um einen Pfad, der Multibyte-Zeichen enthält, korrekt parsen zu können, muss die entsprechende Locale mit der Funktion setlocale() gesetzt werden.

Parameter-Liste

path

Der zu analysierende Dateipfad.

flags

Gibt, falls vorhanden, ein bestimmtes Element an, das zurückgegeben werden soll. Mögliche Werte: PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION oder PATHINFO_FILENAME.

Falls flags nicht angegeben wird, werden alle verfügbaren Elemente zurückgegeben.

Rückgabewerte

Falls der Parameter flags nicht angegeben wird, wird ein assoziatives Array mit den folgenden Elementen zurückgegeben: dirname, basename, extension (falls vorhanden) und filename.

Hinweis:

Wenn path mehr als eine Erweiterung hat, gibt PATHINFO_EXTENSION nur die letzte zurück, und PATHINFO_FILENAME entfernt nur die letzte. (Siehe auch das erste Beispiel weiter unten.)

Hinweis:

Falls path keine Erweiterung hat, wird das Element extension nicht zurückgegeben (siehe das zweite Beispiel unten).

Hinweis:

Beginnt basename von path mit einem Punkt, werden die folgenden Zeichen als extension interpretiert, und filename ist leer (siehe das dritte Beispiel unten).

Falls flags genutzt wird, gibt diese Funktion einen String mit dem gewünschten Element zurück.

Beispiele

Beispiel #1 pathinfo()-Beispiel

<?php
$path_parts
= pathinfo('/www/htdocs/inc/lib.inc.php');

echo
$path_parts['dirname'], "\n";
echo
$path_parts['basename'], "\n";
echo
$path_parts['extension'], "\n";
echo
$path_parts['filename'], "\n";
?>

Das oben gezeigte Beispiel erzeugt folgende Ausgabe:

/www/htdocs/inc
lib.inc.php
php
lib.inc

Beispiel #2 pathinfo()-Beispiel für den Unterschied zwischen einer leeren und keiner Erweiterung

<?php
$path_parts
= pathinfo('/path/emptyextension.');
var_dump($path_parts['extension']);

$path_parts = pathinfo('/path/noextension');
var_dump($path_parts['extension']);
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

string(0) ""

Notice: Undefined index: extension in test.php on line 6
NULL

Beispiel #3 pathinfo()-Beispiel für eine Punktdatei

<?php
print_r
(pathinfo('/some/path/.test'));
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

Array
(
    [dirname] => /some/path
    [basename] => .test
    [extension] => test
    [filename] =>
)

Beispiel #4 pathinfo()-Beispiel mit Array-Dereferenzierung

Der Parameter flags ist keine Bitmaske. Es kann nur ein einziger Wert angegeben werden. Um nur eine begrenzte Menge von geparsten Werten auszuwählen, kann das Array wie folgt zerlegt werden:

<?php
['basename' => $basename, 'dirname' => $dirname] = pathinfo('/www/htdocs/inc/lib.inc.php');

var_dump($basename, $dirname);
?>

Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:

string(11) "lib.inc.php"
string(15) "/www/htdocs/inc"

Siehe auch

  • dirname() - Liefert den Pfad des übergeordneten Verzeichnisses
  • basename() - Liefert den letzten Namensteil einer Pfadangabe
  • parse_url() - Analysiert eine URL und gibt ihre Bestandteile zurück
  • realpath() - Löst einen Pfad in einen absoluten und eindeutigen auf

add a note

User Contributed Notes 4 notes

up
41
Lori
5 years ago
Simple example of pathinfo and array destructuring in PHP 7:
<?php
[ 'basename' => $basename, 'dirname' => $dirname ] = pathinfo('/www/htdocs/inc/lib.inc.php');

var_dump($basename, $dirname);

// result:
// string(11) "lib.inc.php"
// string(15) "/www/htdocs/inc"
?>
up
7
urvi
1 year ago
about the path, there are one thing you should note :
On Windows, both slash (/) and backslash (\) are used as directory separator character. In other environments, it is the forward slash (/). (this explain is from basename() function part https://www.php.net/manual/en/function.basename.php)
example:
<?php
$path
= "https://urvidutta.com /a\b\c\filename.pdf";

echo
pathinfo($pdfUrl, PATHINFO_BASENAME); //get basename
//output
//on window: result is filename.pdf
//on Linux: result is a\b\c\filename.pdf (that is may not your expect)

//so in order to get same result in different system. i will do below first.
$path = str_replace($path, '\\', '/'); //convert '\' to '/'
?>
up
13
Pietro Baricco
12 years ago
Use this function in place of pathinfo to make it work with UTF-8 encoded file names too

<?php
function mb_pathinfo($filepath) {
preg_match('%^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$%im',$filepath,$m);
if(
$m[1]) $ret['dirname']=$m[1];
if(
$m[2]) $ret['basename']=$m[2];
if(
$m[5]) $ret['extension']=$m[5];
if(
$m[3]) $ret['filename']=$m[3];
return
$ret;
}
?>
up
11
n0dalus
19 years ago
If a file has more than one 'file extension' (seperated by periods), the last one will be returned.
For example:
<?php
$pathinfo
= pathinfo('/dir/test.tar.gz');
echo
'Extension: '.$pathinfo['extension'];
?>
will produce:
Extension: gz

and not tar.gz
To Top