Hàm pathinfo() trong PHP

24/11/2020 - lượt xem
Chia sẻ
 
4.8/5 - (41 bình chọn)

Định nghĩa.

Hàm pathinfo() sẽ lấy thông tin về đường dẫn truyền vào.

Cú pháp.

Cú pháp:

pathinfo ( string $path [, int $options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME ] ) : mixed

Trong đó.

  • $path là đường dẫn cần lấy thông tin.
  • $option là tham số không bắt buộc, có thể mang một trong các giá trị sau: PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION , PATHINFO_FILENAME.

Giá trị trả về.

  • Nếu tham số tùy chọn không được truyền, một mảng kết hợp chứa các phần tử sau sẽ được trả về: tên dirname, tên cơ sở, phần mở rộng (nếu có) và tên tệp.

Changelog.

  • 5.2.0 Hằng số PATHINFO_FILENAME đã được thêm vào.

ghi chú.

  • Ghi chú: Để biết thông tin về cách truy xuất thông tin đường dẫn hiện tại, hãy đọc phần về các predefined reserved variables.
  • hận trọng pathinfo () nhận biết ngôn ngữ, vì vậy để phân tích cú pháp một đường dẫn chứa các ký tự nhiều byte một cách chính xác, ngôn ngữ phù hợp phải được đặt bằng cách sử dụng hàm setlocale ().
  • Ghi chú: Nếu đường dẫn có nhiều phần mở rộng, PATHINFO_EXTENSION chỉ trả về phần mở rộng cuối cùng và PATHINFO_FILENAME chỉ dải phần cuối cùng. (xem ví dụ đầu tiên bên dưới).
  • Ghi chú: Nếu đường dẫn không có phần mở rộng, sẽ không có phần tử mở rộng nào được trả về (xem ví dụ thứ hai bên dưới).
  • Ghi chú: Nếu basename  của đường dẫn bắt đầu bằng dấu chấm, các ký tự sau được hiểu là phần mở rộng và tên tệp trống (xem ví dụ thứ ba bên dưới).

Ví dụ.

Ví dụ # 1 pathinfo ().

code.

<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['extension'], "\n";
echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>

Ví dụ trên có thể sẽ xuất ra:

/www/htdocs/inc
lib.inc.php
php
lib.inc

Ví dụ # 2 pathinfo () ví dụ cho thấy sự khác biệt giữa null và không có phần mở rộng.

<?php
$path_parts = pathinfo('/path/emptyextension.');
var_dump($path_parts['extension']);

$path_parts = pathinfo('/path/noextension');
var_dump($path_parts['extension']);
?>

Ví dụ trên sẽ xuất ra một cái gì đó tương tự như:

string(0) ""

Notice: Undefined index: extension in test.php on line 6
NULL

Ví dụ # 3 pathinfo () ví dụ cho một tệp chấm.

<?php
print_r(pathinfo('/some/path/.test'));
?>

Ví dụ trên sẽ xuất ra một cái gì đó tương tự như:

Array
(
    [dirname] => /some/path
    [basename] => .test
    [extension] => test
    [filename] => 
)

Hàm liên quan.

  • dirname()  – Trả về đường dẫn của thư mục mẹ
  • basename () – Trả về thành phần tên theo sau của đường dẫn
  • parse_url() – Phân tích cú pháp URL và trả về các thành phần của nó
  • realpath() – Trả về tên đường dẫn tuyệt đối được chuẩn hóa

Thông tin thêm.

  • Ví dụ đơn giản về pathinfo và cấu trúc mảng trong PHP 7:
    <?php
    [ 'basename' => $basename, 'dirname' => $dirname ] = pathinfo('/www/htdocs/inc/lib.inc.php');
    
    var_dump($basename, $dirname);
    
    // result:
    // string(11) "lib.inc.php"
    // string(15) "/www/htdocs/inc"
    ?>
  • Sử dụng chức năng này thay cho pathinfo để làm cho nó hoạt động với các tên tệp được mã hóa UTF-8
    <?php
    function mb_pathinfo($filepath) {
        preg_match('%^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$%im',$filepath,$m);
        if($m[1]) $ret['dirname']=$m[1];
        if($m[2]) $ret['basename']=$m[2];
        if($m[5]) $ret['extension']=$m[5];
        if($m[3]) $ret['filename']=$m[3];
        return $ret;
    }
    ?>
  • Đã kiểm tra với phiên bản 5.5.12: Nó hoạt động tốt với tên tệp có ký tự utf-8, pathinfo sẽ loại bỏ chúng:
    <?php
    print_r(pathinfo("/mnt/files/飛兒樂團光茫.mp3"));
    ?>
    
    .. will display:
    
    Array
    (
        [dirname] => /mnt/files
        [basename] => 飛兒樂團光茫.mp3
        [extension] => mp3
        [filename] => 飛兒樂團光茫
    )
  • Nếu một tệp có nhiều ‘phần mở rộng tệp’ (được phân tách theo dấu chấm), thì phần cuối cùng sẽ được trả về. Ví dụ:
    <?php
    $pathinfo = pathinfo('/dir/test.tar.gz');
    echo 'Extension: '.$pathinfo['extension'];
    ?>
    Phần mở rộng: gz và không phải tar.gz

Các bạn có thể xem chi tiết hơn trên php.net.

Hi vọng với bài viết này, bạn đã hiểu rõ ứng dụng của hàm pathinfo() trong PHP. Nếu bạn thấy bài viết hay và có ý nghĩa hãy like và chia sẻ bài viết này để mọi người cùng nhau học tập nhé. Cảm ơn các bạn đã ghé thăm codetutam.com

 

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    4.8/5 - (41 bình chọn)

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm