basename în PHP

Returnează doar numele fișierului dintr-o cale, fără directoare.

Sintaxă
basename(string $path, string $suffix = ''): string

Ce face basename

basename păstrează ultima parte a căii, după ultimul /. Dacă dai și al doilea parametru, acel sufix este tăiat de la final, de exemplu extensia.

Este o protecție simplă când primești un nume de fișier de la utilizator: elimină orice ../ sau director din fața numelui.

Parametri

Parametru Descriere
$path Calea.
$suffix Opțional. Textul eliminat de la final, dacă numele se termină cu el.

Ce returnează

Numele fișierului.

Exemple

Exemplul 1: Numele fișierului și fără extensie

<?php
$cale = "/var/www/uploads/factura-1024.pdf";

echo basename($cale) . "\n";
echo basename($cale, ".pdf");

Rezultat

factura-1024.pdf
factura-1024

Exemplul 2: Protecție la un nume primit din formular

Indiferent ce trimite vizitatorul, rămâne doar numele fișierului, în directorul pe care îl alegi tu.

<?php
$_GET["fisier"] = "../../config.php";

$nume = basename($_GET["fisier"]);
echo "documente/" . $nume;

Rezultat

documente/config.php

Greșeli frecvente

  • Crezi că basename taie extensia automat. Fără al doilea parametru, extensia rămâne. Pentru numele fără extensie, oricare ar fi ea, folosește pathinfo($cale, PATHINFO_FILENAME).

Comenzi înrudite

  • dirname: Returnează directorul părinte al unei căi.
  • pathinfo: Împarte o cale de fișier în director, nume complet, nume fără extensie și extensie.
  • realpath: Transformă o cale relativă într-o cale absolută, fără ../ și fără scurtături.