Hàm pathinfo() trong PHP
Trần Thị Vân
- 1286
- 11/08/2025
Chức năng của Hàm pathinfo() trong PHP
Hàm pathinfo() trong PHP dùng để lấy thông tin của một đường dẫn, thông tin trả về trong mảng bao gồm: thư mục, tên file có đuôi, loại file, tên file.
Cú pháp của Hàm pathinfo() trong PHP
$biến_mảng = pathinfo("đường_dẫn_đến_file");
đường_dẫn_đến_file: Đường dẫn đến file.
$biến_mảng: Kết quả trả về biến mảng chứa các thông tin (thư mục, tên file có đuôi, loại file, tên file).
Code Hàm pathinfo() trong PHP
<?php
// Đường dẫn đến file
$filenguon = "thumuctest/test.txt";
// Lấy thông tin đường dẫn của file
$mang = pathinfo($filenguon);
print_r($mang);
// Kết quả: Array ( [dirname] => thumuctest [basename] => test.txt [extension] => txt [filename] => test )
echo "Thư mục: ".$mang['dirname'];
// Kết quả: thumuctest
echo "Tên file có đuôi: ".$mang['basename'];
// Kết quả: test.txt
echo "Loại file: ".$mang['extension'];
// Kết quả: txt
echo "Tên file: ".$mang['filename']."<br>";
// Kết quả: test
?>
Kết quả:
Array ( [dirname] => thumuctest [basename] => test.txt [extension] => txt [filename] => test )
Thư mục: thumuctest
Tên file có đuôi: test.txt
Loại file: txt
Tên file: test
# Các thông tin có thể lấy từ hàm pathinfo() trong PHP
Các thông tin có thể lấy từ hàm pathinfo() trong PHP
Hàm pathinfo() không chỉ dùng để kiểm tra một đường dẫn mà còn giúp tách đường dẫn thành nhiều thành phần riêng biệt. Tùy nhu cầu xử lý, PHP có thể cung cấp tên thư mục, tên file, tên file không có phần mở rộng hoặc phần mở rộng của file.
Điểm tiện lợi là bạn có thể lấy toàn bộ thông tin trong một lần gọi hàm hoặc chỉ yêu cầu đúng thành phần cần dùng. Cách này đặc biệt hữu ích khi xử lý file tải lên, xây dựng tên file mới hoặc kiểm tra định dạng tài liệu.
Lấy tên file và phần mở rộng bằng pathinfo()
Khi cần biết tên file và phần mở rộng, pathinfo() có thể trả về hai thành phần tương ứng là basename và extension. Ví dụ, với đường dẫn /uploads/tailieu.pdf, tên file là tailieu.pdf, còn phần mở rộng là pdf.
Có thể lấy riêng phần mở rộng bằng cách truyền thêm PATHINFO_EXTENSION. Cách này phù hợp khi cần kiểm tra nhanh loại file trước khi tiếp tục xử lý.
<?php
$file = '/uploads/tailieu.pdf';
$extension = pathinfo($file, PATHINFO_EXTENSION);
echo $extension;
?>
Kết quả thu được là pdf. Phần mở rộng được trả về không bao gồm dấu chấm ở phía trước. Vì vậy, nếu cần tạo chuỗi như .pdf, bạn phải tự bổ sung dấu chấm.
Nếu muốn lấy cả tên file kèm phần mở rộng, có thể sử dụng PATHINFO_BASENAME.
<?php
$file = '/uploads/tailieu.pdf';
$name = pathinfo($file, PATHINFO_BASENAME);
echo $name;
?>
Kết quả là tailieu.pdf. Cách này hữu ích khi đường dẫn ban đầu chứa nhiều thư mục nhưng chương trình chỉ cần phần tên file ở cuối đường dẫn.
Lấy đường dẫn thư mục từ pathinfo()
Ngoài tên file, pathinfo() còn có thể xác định phần thư mục chứa file thông qua PATHINFO_DIRNAME. Thành phần này giúp tách phần đường dẫn phía trước tên file mà không cần tự xử lý chuỗi bằng nhiều hàm khác.
<?php
$file = '/var/www/uploads/image.jpg';
$directory = pathinfo($file, PATHINFO_DIRNAME);
echo $directory;
?>
Kết quả là /var/www/uploads. Đây là cách thuận tiện khi chương trình cần xác định thư mục hiện tại của một file để thực hiện các thao tác tiếp theo.
Chẳng hạn, khi xử lý một danh sách đường dẫn, bạn có thể lấy riêng thư mục để kiểm tra vị trí lưu trữ mà không cần quan tâm đến tên file hoặc phần mở rộng.
Điểm cần lưu ý là giá trị trả về phụ thuộc trực tiếp vào chuỗi đường dẫn được truyền vào. pathinfo() không kiểm tra thư mục đó có thực sự tồn tại hay file có thực sự nằm ở vị trí đó hay không. Nếu cần xác minh file hoặc thư mục trên hệ thống, phải kết hợp với các hàm kiểm tra phù hợp.
Lấy từng thành phần của đường dẫn bằng PATHINFO
Nếu cần nhiều thông tin cùng lúc, bạn không nhất thiết phải gọi pathinfo() nhiều lần. Khi không chỉ định một cờ PATHINFO_* cụ thể, hàm có thể trả về một mảng chứa các thành phần mà PHP xác định được từ đường dẫn.
<?php
$file = '/uploads/images/banner.jpg';
$info = pathinfo($file);
echo $info['dirname'];
echo $info['basename'];
echo $info['extension'];
echo $info['filename'];
?>
Với đường dẫn trên, mảng kết quả có thể được hiểu theo các thành phần:
- dirname: thư mục chứa file.
- basename: tên file đầy đủ, bao gồm phần mở rộng.
- extension: phần mở rộng của file.
- filename: tên file không bao gồm phần mở rộng.
Cách lấy mảng thông tin phù hợp khi một đoạn chương trình cần sử dụng nhiều thành phần của cùng một đường dẫn. Ngược lại, nếu chỉ cần một giá trị, truyền trực tiếp cờ tương ứng sẽ giúp cách viết ngắn gọn và thể hiện rõ mục đích xử lý.
Khi làm việc với dữ liệu từ người dùng, đặc biệt là tên file tải lên, không nên xem phần mở rộng lấy được từ đường dẫn là cơ chế bảo mật duy nhất. Việc xác thực loại file, nội dung file và cách lưu trữ vẫn cần được thực hiện riêng để tránh xử lý dữ liệu không an toàn.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm pathinfo() trong PHP.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *