Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

Dateiname aus einem Pfad extrahieren mit basename()

Sie befinden sich: Home > Php Tutorial > Dateiname aus einem Pfad...

Dateiname aus einem Pfad extrahieren mit basename()


Eintrag am:  25.01.2010
Hits / Besucher:  14072
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Wer mit Dateipfaden arbeitet, braucht oft nur den Dateinamen ohne das gesamte Verzeichnis. PHP stellt dafür die Funktion basename() bereit, die den letzten Bestandteil eines Pfades zurückgibt.

Grundlegende Verwendung

Die Funktion basename() erwartet einen Pfad als String und gibt den Dateinamen zurück:

<?php

$pfad = '/var/www/html/bilder/foto.jpg';

echo basename($pfad);
/* Ausgabe: foto.jpg */
?>

Egal ob der Pfad mit Slash (/) oder Backslash (\) getrennt ist, basename() erkennt beides. Auf Windows-Systemen funktionieren beide Trennzeichen, auf Linux nur der Slash.

Dateiendung entfernen mit dem Suffix-Parameter

Der optionale zweite Parameter entfernt eine angegebene Endung vom Ergebnis. Das ist praktisch, wenn nur der Dateiname ohne Extension gebraucht wird:

<?php

$pfad = '/uploads/dokument.pdf';

echo basename($pfad, '.pdf');
/* Ausgabe: dokument */

echo basename($pfad, '.txt');
/* Ausgabe: dokument.pdf (Suffix stimmt nicht, bleibt unveraendert) */
?>

Wenn das angegebene Suffix nicht zum Dateinamen passt, wird der vollständige Name zurückgegeben.

Praxisbeispiel: Datei-Upload absichern

Bei Datei-Uploads senden manche Browser den kompletten Pfad statt nur den Dateinamen. Mit basename() lässt sich der reine Dateiname extrahieren:

<?php

$upload_name = $_FILES['datei']['name'];

/* Nur den Dateinamen verwenden,
eventuelle Pfadangaben entfernen */
$sicherer_name = basename($upload_name);

$ziel = '/var/www/uploads/' . $sicherer_name;
move_uploaded_file($_FILES['datei']['tmp_name'], $ziel);
?>

So wird verhindert, dass ein manipulierter Pfad wie ../../etc/passwd als Dateiname durchrutscht.

Mehr Kontrolle mit pathinfo()

Wenn mehrere Bestandteile eines Pfades gleichzeitig gebraucht werden, ist pathinfo() die bessere Wahl. Die Funktion gibt ein Array mit allen Teilen zurück:

<?php

$pfad = '/var/www/html/bilder/foto.jpg';
$info = pathinfo($pfad);

echo $info['dirname']; // /var/www/html/bilder
echo $info['basename']; // foto.jpg
echo $info['extension']; // jpg
echo $info['filename']; // foto
?>

Mit pathinfo() lassen sich Verzeichnis, Dateiname, Endung und Name ohne Endung in einem Aufruf ermitteln. Das spart Code, wenn mehrere dieser Informationen benötigt werden.

Übersicht: basename() vs. pathinfo()

Beide Funktionen haben ihre Berechtigung. basename() ist ideal, wenn nur der Dateiname gebraucht wird. pathinfo() eignet sich besser, wenn zusätzlich das Verzeichnis oder die Dateiendung benötigt werden. Für das Verzeichnis allein gibt es außerdem dirname(), die das Gegenstück zu basename() bildet.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.