Hàm basename( ) PHP sử dụng như thế nào ?

Trong PHP, hàm là một khối lệnh tập trung vào chính nó và có thể được thực thi nhiều lần tùy thuộc vào yêu cầu của nhà phát triển. PHP chứa nhiều hàm tích hợp sẵn có thể được sử dụng khi cần thiết. Trong các hàm này, chúng ta không cần phải đưa ra định nghĩa của hàm; tất cả những gì chúng ta cần là khai báo hàm và thêm tham số để sử dụng nó.

Lập Trình Viên mời bạn cùng tham khảo chi tiết nội dung bên dưới. Bài viết này nằm trong chuyên đề hướng dẫn PHP từ cơ bản đến nâng cao tại dự án Phát Triển Website.

Trong số các hàm tích hợp trong PHP, hàm basename() được sử dụng để trả về tên cơ bản của một tệp đã cho từ đường dẫn của tệp đó. Nó trả về phần cuối cùng của đường dẫn.

Hàm basename() PHP Là gì?

Hàm basename( ) PHP là một hàm tích hợp sẵn được sử dụng để trả về tên cơ bản của một tệp đã cho từ đường dẫn của tệp đó. Ví dụ:

$full_path = '/var/www/example.com/public_html/index.php';
$file_name = basename($full_path); // $file_name is set to 'index.php'

Hàm basename( ) PHP có hai tham số bắt buộc để hàm được thực thi. Tham số đầu tiên là $Path, tham số này xác định đường dẫn của tệp hoặc thư mục, tham số này là kiểu chuỗi và là bắt buộc phải cung cấp tham số này để thực thi các chức năng. Tham số thứ hai là $Suffix, đây là một tham số không bắt buộc được sử dụng khi một tệp chứa phần mở rộng tên kết thúc bằng một hậu tố, tham số này ẩn đi phần mở rộng.

Cú pháp:

basename($path, $suffix);

Hướng dẫn Hàm basename() PHP

Để sử dụng Hàm basename( ) PHP, chúng ta chỉ cần truyền đường dẫn tệp vào như tham số.

Ví dụ:

$path = '/var/www/example.com/public_html/index.php';
$file_name = basename($path); // $file_name is set to 'index.php'

Trong ví dụ này, biến $path chứa đường dẫn tập tin và hàm basename() trả về phần cuối cùng của đường dẫn đó. Kết quả sẽ được gán cho biến $file_name.

Nếu bạn muốn ẩn bất kỳ phần mở rộng nào của tệp, bạn có thể sử dụng tham số $suffix. Ví dụ:

$path = '/var/www/example.com/public_html/index.php';
$extension = '.php';
$file_name = basename($path, $extension); // $file_name is set to 'index'

Trong ví dụ này, biến $extension chứa phần mở rộng và Hàm basename( ) PHP ẩn nó khỏi kết quả trả về.

Cách triển khai hàm basename( ) PHP

Hàm basename() trong PHP được sử dụng để trả về tên cuối cùng của một đường dẫn. Hàm này có cú pháp như sau:

basename(string $path, string $suffix = null);

Trong đó:

  • $path là đường dẫn đến tệp hoặc thư mục.
  • $suffix là hậu tố của tệp hoặc thư mục. Nếu không được chỉ định, hàm sẽ trả về tất cả các ký tự sau dấu cuối cùng của đường dẫn.

Ví dụ:

// Trả về tên tệp
$path = "/path/to/file.php";
$basename = basename($path);
echo $basename; // file.php

// Trả về tên thư mục
$path = "/path/to/directory";
$basename = basename($path);
echo $basename; // directory

// Trả về tên tệp mà không có hậu tố .php
$path = "/path/to/file.php";
$basename = basename($path, ".php");
echo $basename; // file

Hàm basename() có thể được triển khai theo nhiều cách khác nhau. Một cách triển khai đơn giản là sử dụng hàm strrchr() để tìm vị trí của ký tự cuối cùng trong đường dẫn, sau đó trả về tất cả các ký tự sau vị trí đó.

function basename($path, $suffix = null) {
    $last_index = strrpos($path, "/");
    if ($last_index === false) {
        if ($suffix === null) {
            return $path;
        } else {
            return "";
        }
    }

    $basename = substr($path, $last_index + 1);
    if ($suffix !== null) {
        if (substr($basename, -strlen($suffix)) === $suffix) {
            $basename = substr($basename, 0, -strlen($suffix));
        }
    }

    return $basename;
}

Một cách triển khai khác là sử dụng hàm explode() để phân tách đường dẫn thành các thành phần, sau đó trả về thành phần cuối cùng.

function basename($path, $suffix = null) {
    $parts = explode("/", $path);
    return $parts[count($parts) - 1];
}

Cách triển khai nào sẽ phù hợp nhất phụ thuộc vào nhu cầu cụ thể của bạn.

Ưu và Nhược điểm Hàm basename() PHP

Ưu điểm

  • Hàm basename( ) PHP dễ sử dụng và hiệu quả trong việc lấy tên cơ bản của một tệp.
  • Nó là một hàm tích hợp sẵn trong PHP và không cần cài đặt thêm.

Nhược điểm

  • Hàm basename Không có nhiều nhược điểm để nói về hàm `basename(). Tuy nhiên, một số vấn đề cần lưu ý khi sử dụng hàm này bao gồm:
  • Các thành phần như . không được nhận ra là một đường dẫn bởi Hàm basename( ) PHP.
  • Đường dẫn của người dùng chỉ được khai báo dưới dạng chuỗi; do đó, hàm basename() không nhận ra hệ thống tệp thực tế được sử dụng trong các hệ điều hành.
  • Trên hệ điều hành Windows, hệ thống thư mục sử dụng dấu / và \ để di chuyển vào và ra khỏi tệp. Những ký tự này được gọi là phân cách thư mục. Tuy nhiên, trên một hệ điều hành khác như Linux, chúng ta chỉ có thể sử dụng dấu / duy nhất.
  • Với Hàm basename( ) PHP, chúng ta chỉ có thể có tên cơ bản của thư mục được xác định trong tham số hàm basename(). Để lấy tất cả các thành phần của tệp, chúng ta có thể sử dụng hàm pathinfo(), đó cũng là một hàm tích hợp trong PHP.

Lời khuyên Hàm basename() PHP

Hàm basename( ) PHP là một hàm tiện ích đơn giản trong PHP, nhưng nó có thể rất hữu ích khi làm việc với các tệp và thư mục. Khi sử dụng hàm này, hãy nhớ lưu ý những vấn đề liên quan đến định dạng đường dẫn và tên tệp.

Kết luận

Như vậy, trong bài viết này chúng ta đã tìm hiểu về Hàm basename( ) PHP. Chúng ta đã tìm hiểu cách sử dụng hàm này để lấy tên cơ bản của một tệp từ đường dẫn của nó, cũng như những vấn đề cần lưu ý khi sử dụng hàm này. Nếu bạn đang làm việc với tệp và thư mục trong PHP, hàm basename() sẽ là một công cụ hữu ích cho công việc của bạn. 

1. Tại sao Hàm basename( ) PHP không hoạt động trên đường dẫn URL?

Hàm basename() chỉ hoạt động trên đường dẫn hệ thống tệp, không phải đường dẫn URL. Để lấy tên tệp từ đường dẫn URL, bạn có thể sử dụng hàm parse_url() kết hợp với hàm basename().

2. Tôi có thể sử dụng Hàm basename( ) PHP để lấy tên thư mục?

Đúng vậy, bạn có thể sử dụng hàm basename() để lấy tên cơ bản của thư mục. Nếu bạn truyền đường dẫn của một thư mục vào hàm basename(), nó sẽ trả về tên của thư mục đó.

3. Tôi có thể sử dụng hàm basename() trên Windows và Linux?

Có, Hàm basename( ) PHP hoạt động trên cả Windows và Linux. Tuy nhiên, như đã đề cập ở trên, các hệđiều hành này sử dụng các ký tự phân cách thư mục khác nhau và có thể ảnh hưởng đến cách sử dụng hàm basename().

4. Tại sao tôi không thể lấy tất cả các thành phần của tệp với Hàm basename( ) PHP ?

Hàm basename() chỉ trả về tên cơ bản của tệp, không bao gồm các thành phần khác như phần mở rộng hoặc đường dẫn thư mục chứa tệp đó. Để lấy tất cả các thành phần của tệp, bạn có thể sử dụng hàm pathinfo(), đó cũng là một hàm tích hợp trong PHP.