In manchen Situationen haben Sie einen String, der den kompletten Pfad zu einer Datei incl. des Dateinamens enthält. Um daraus den Pfad getrennt vom Dateinamen auszulesen, müssten Sie das am weitesten rechts stehende Trennzeichen ausfindig machen. Alles links davon ist der Pfad, alles rechts davon der Dateiname.
Das Problem liegt jedoch im Detail, da Ihr PHP Script durchaus problemlos unter Windows wie in Unix-Umgebungen laufen kann. Leider verwenden Windows und Unix verschiedene Trennzeichen: Unter Windows kommt der Backslash "", unter Unix der Slash "/" zum Einsatz. Ferner darf der Backslash in Unix-Dateisystemen Bestandteil des Namens sein. Diese Details machen die Aufgabe etwas schwieriger, als der erste Ansatz vermuten lässt.
Zum Glück gibt es seit PHP 3 die Funktion dirname(string Pfad). Diese übernimmt die gewünschte Aufgabe plattformunabhängig. Das bedeutet, das diese Funktion in jeder PHP-Implementierung passend zum Betriebssystem funktioniert und Sie sich darüber keine Gedanken machen müssen.
Der Syntax:
dirname(string pfad)
Beispiel:
<?php
/*
* Created on 24.01.2010 by Nico Schubert
*/
$pfad = '/var/test/test.php';
$verzeichnisname = dirname($pfad);
echo 'Der Verzeichnisname von den Pfad "'.$pfad.'"
ist "'.$verzeichnisname.'".';
?>
Ausgabe:
Der Verzeichnisname von dem Pfad /var/test/test.php ist /var/test
Erklärung:
Die Funktion dirname() sucht nach dem letzten Vorkommen des plattformabhängigen Pfadtrenner und teilt den übergebenen String dort auf. Sie liefert den Teilstring von Start bis zum Trennzeichen ausschliesslich des Trennzeichens als Ergebnis zurück. Es werden keine Dateioperationen durchgeführt und es wird auch nicht getestet, ob die Datei existiert etc.
Siehe auch:
Die Funktion basename() liefert das Gegenstück zu dirname(), eben den aus der Pfadangabe extrahierten Dateinamen zurück.