Ce face pathinfo
pathinfo analizează doar textul căii, fără să verifice dacă fișierul există. Returnează un tablou cu cheile dirname, basename, extension și filename.
Dacă ai nevoie de o singură parte, dai al doilea parametru: PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION sau PATHINFO_FILENAME. Atunci rezultatul este un text.
Parametri
| Parametru | Descriere |
|---|---|
$path |
Calea analizată. |
$flags |
Opțional. Una dintre constantele PATHINFO_*, ca să primești doar acea parte. |
Ce returnează
Un tablou cu părțile căii sau, cu $flags, textul cerut.
Exemple
Exemplul 1: Toate părțile unei căi
Extensia este doar ce urmează după ultimul punct.
<?php
print_r(pathinfo("/var/www/poze/vacanta.mare.jpg"));
Rezultat
Array
(
[dirname] => /var/www/poze
[basename] => vacanta.mare.jpg
[extension] => jpg
[filename] => vacanta.mare
)
Exemplul 2: Verificarea extensiei unei imagini
Transformăm extensia în litere mici, ca POZA.JPG să fie acceptată la fel ca poza.jpg.
<?php
$permise = ["jpg", "jpeg", "png", "webp"];
foreach (["concediu.JPG", "cv.pdf", "logo.png"] as $nume) {
$extensie = strtolower(pathinfo($nume, PATHINFO_EXTENSION));
echo $nume . ": " . (in_array($extensie, $permise) ? "acceptat" : "respins") . "\n";
}
Rezultat
concediu.JPG: acceptat
cv.pdf: respins
logo.png: acceptat
Exemplul 3: Fișier fără extensie
Cheia extension lipsește din tablou, deci folosim ?? pentru o valoare implicită.
<?php
$info = pathinfo("README");
print_r($info);
echo "Extensie: '" . ($info["extension"] ?? "") . "'";
Rezultat
Array
(
[dirname] => .
[basename] => README
[filename] => README
)
Extensie: ''
Greșeli frecvente
- Accesezi
$info["extension"]pentru un fișier fără extensie și primeștiWarning: Undefined array key. Folosește?? "". - Te bazezi doar pe extensie ca să verifici că un fișier încărcat este imagine. Extensia se poate falsifica ușor. Verifică și conținutul (de exemplu cu
getimagesize).