Hàm basename() trong PHP

Hàm basename() trong PHP
Hàm basename() trong PHP

Chức năng của Hàm basename() trong PHP

Hàm basename() trong PHP dùng để lấy tên file có đuôi hoặc tên file không có đuôi, ngoài ra có thể lấy tên thư mục.

Cú pháp của Hàm basename() trong PHP

$kết_quả = basename("đường_dẫn_file");

đường_dẫn_file: Đường dẫn tới file (Ví dụ: /tenthumuc/tenfile.php).

$kết_quả: Kết quả trả về tên file có đuôi (Ví dụ: tenfile.php).

$kết_quả = basename("đường_dẫn_file",".tên_đuôi_của_file");

đường_dẫn_file: Đường dẫn tới file (Ví dụ: /tenthumuc/tenfile.php).

tên_đuôi_của_file: Tên đuôi của file cần bỏ ra, chỉ lấy tên file không có đuôi (Ví dụ: php, jpg, png,....)

$kết_quả: Kết quả trả về tên file không có đuôi (Ví dụ: tenfile).

$kết_quả = basename("đường_dẫn_thư_mục");

đường_dẫn_thư_mục: Đường dẫn tới thư mục (Ví dụ: /tenthumuc/)

$kết_quả: Kết quả trả về tên thư mục (Ví dụ: tenthumuc)

Code Hàm basename() trong PHP

<?php
$duongdan = "/tenthumuc/tenfile.php";

//Lấy tên file
echo basename($duongdan); // Kết quả: tenfile.php


// Lấy tên file bỏ đuôi .php
echo basename($duongdan,".php"); // Kết quả: tenfile

// Lấy tên thư mục
$duongdan2 = "/tenthumuc/";
echo basename($duongdan2); // Kết quả: tenthumuc
?>

Kết quả:

tenfile.php

tenfile

tenthumuc

Những lưu ý khi sử dụng basename() trong PHP

Khi xử lý đường dẫn tệp trong PHP, basename() thường được dùng để tách phần tên cuối cùng khỏi một chuỗi đường dẫn. Tuy nhiên, kết quả trả về phụ thuộc vào chính chuỗi đầu vào và cách bạn sử dụng tham số thứ hai. Hiểu rõ những điểm này giúp tránh lấy sai tên tệp hoặc xử lý đường dẫn không đúng như mong muốn.

basename() xử lý đường dẫn có đuôi file như thế nào?

Mặc định, basename() trả về phần cuối cùng của đường dẫn và giữ nguyên phần mở rộng của tệp. Ví dụ, với đường dẫn /var/www/uploads/anh-demo.jpg, kết quả sẽ là anh-demo.jpg.

Nếu muốn lấy tên tệp nhưng bỏ phần mở rộng, có thể truyền thêm tham số thứ hai chứa phần cần loại bỏ. Cách này phù hợp khi cần tạo tên hiển thị, xây dựng đường dẫn mới hoặc xử lý tên tệp theo từng phần.

<?php
$path = "/var/www/uploads/anh-demo.jpg";

echo basename($path);
echo "\n";
echo basename($path, ".jpg");
?>

Kết quả lần lượt là anh-demo.jpganh-demo. Tham số thứ hai không phải là cơ chế đổi phần mở rộng bất kỳ; nó chỉ loại bỏ chuỗi được chỉ định khi chuỗi đó phù hợp với phần cuối của tên.

Cách sử dụng basename() để lấy tên file an toàn

Một trường hợp thường gặp là lấy tên tệp từ dữ liệu do người dùng cung cấp, chẳng hạn tên tệp tải lên. basename() có thể giúp loại bỏ phần thư mục khỏi chuỗi và chỉ giữ lại thành phần cuối cùng.

<?php
$fileName = basename($_FILES["file"]["name"]);

echo $fileName;
?>

Tuy nhiên, basename() không phải công cụ kiểm tra bảo mật toàn diện. Khi xử lý tệp tải lên, không nên chỉ dựa vào tên tệp nhận được từ người dùng. Ứng dụng vẫn cần kiểm tra loại tệp, kích thước, vị trí lưu trữ và cách đặt tên tệp trước khi ghi dữ liệu lên máy chủ.

Đặc biệt, nên tránh sử dụng trực tiếp tên tệp do người dùng cung cấp làm tên tệp cuối cùng trong hệ thống. Một cách an toàn hơn là tạo tên riêng cho tệp, sau đó lưu phần mở rộng đã được kiểm tra theo quy tắc của ứng dụng.

Phân biệt basename() với pathinfo() trong PHP

basename() phù hợp khi mục tiêu đơn giản là lấy thành phần cuối của đường dẫn. Trong khi đó, pathinfo() thích hợp hơn khi cần phân tích một đường dẫn thành nhiều thành phần như tên tệp, phần mở rộng hoặc thư mục chứa tệp.

Ví dụ, nếu chỉ cần lấy tên đầy đủ của tệp, basename() thường ngắn gọn và dễ đọc hơn:

<?php
$path = "/var/www/uploads/anh-demo.jpg";

echo basename($path);
?>

Nếu cần lấy riêng tên tệp và phần mở rộng, pathinfo() sẽ thuận tiện hơn:

<?php
$path = "/var/www/uploads/anh-demo.jpg";

$info = pathinfo($path);

echo $info["filename"];
echo "\n";
echo $info["extension"];
?>

Có thể hiểu đơn giản: basename() thiên về lấy phần cuối của đường dẫn, còn pathinfo() thiên về phân tích cấu trúc đường dẫn. Chọn đúng hàm sẽ giúp mã PHP ngắn gọn và thể hiện rõ mục đích xử lý.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm basename() trong PHP.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Hàm basename() trong PHP
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 *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !