Hàm ftell() có chức năng gì trong PHP

24/11/2020 - lượt xem
Chia sẻ
 
Rate this post

Định Nghĩa.

Hàm ftell() sẽ trả về vị trí hiện tại của con trỏ tệp tin.

Cú pháp.

Cú pháp:

ftell ( resource $handle ) : int

Trong đó.

  • $handle Con trỏ tệp phải hợp lệ và phải trỏ đến tệp được mở thành công bởi fopen () hoặc popen (). ftell () cung cấp kết quả không xác định cho các luồng chỉ chắp thêm (được mở bằng cờ “a”).

Giá trị trả về.

  • Hàm sẽ trả về vị trí hiện tại của con trỏ tập tin, nếu xảy ra lỗi hàm sẽ trả về False.

Lưu ý: Vì loại số nguyên của PHP đã được signed  và nhiều nền tảng sử dụng số nguyên 32 bit, một số hàm hệ thống tệp có thể trả về kết quả không mong muốn cho các tệp lớn hơn 2GB.

Ví dụ.

Ví dụ # 1 Một ví dụ đơn giản về ftell()

code:

<?php

// opens a file and read some data
$fp = fopen("/etc/passwd", "r");
$data = fgets($fp, 12);

// where are we ?
echo ftell($fp); // 11

fclose($fp);

?>
.

Hàm liên quan.

  • fopen() – Mở một file hoặc một url
  • popen() – Mở một tiến trình con trỏ
  • fseek() – đặt vị trí cho con trỏ tệp tin của file được truyền vào
  • rewind() – Rewind  lại vị trí của một con trỏ tệp

Thông tin thêm.

  • Khi mở tệp để đọc và ghi thông qua fopen (‘tệp’, ‘a +’), con trỏ tệp phải ở cuối tệp. Tuy nhiên ftell () trả về int (0) ngay cả khi tệp không trống. Ngoài ra, có vẻ như có hai con trỏ, thứ nhất để đọc và thứ hai để viết, bởi vì nó hoạt động khác nhau trong hoạt động đầu tiên (đọc hoặc viết).
    <?php
    // Code
    $file = fopen('counter.txt', 'w');
    fwrite($file, '123456789');
    fclose($file);
    
    $file = fopen('counter.txt', 'r');
    echo ftell($file) . ' "' . fgets($file) . '" ' . ftell($file) . PHP_EOL;
    fclose($file);
    
    $file = fopen('counter.txt', 'a+');
    echo ftell($file) . ' "' . fgets($file) . '" ' . ftell($file) . PHP_EOL;
    fclose($file);
    
    $file = fopen('counter.txt', 'r+');
    fwrite($file, 'rr');
    echo ftell($file) . ' "' . fgets($file) . '" ' . ftell($file) . PHP_EOL;
    fclose($file);
    
    $file = fopen('counter.txt', 'a+');
    fwrite($file, 'aa');
    echo ftell($file) . ' "' . fgets($file) . '" ' . ftell($file) . PHP_EOL;
    fclose($file);
    
    $file = fopen('counter.txt', 'r');
    echo ftell($file) . ' "' . fgets($file) . '" ' . ftell($file) . PHP_EOL;
    fclose($file);
    
    // Kết quả
    0 "123456789" 9
    0 "123456789" 9
    2 "3456789" 9
    2 "" 2
    0 "rr3456789aa" 11
    ?>
  • Khi mở tệp để chắp thêm thông qua fopen (‘tệp’, ‘ab’), con trỏ tệp phải ở cuối tệp. Tuy nhiên ftell () trả về int (0) ngay cả khi tệp không trống và ngay cả sau khi viết một số văn bản vào tệp. Hoặc, bạn có thể sử dụng hàm stream_get_meta_data:
  • Trên thực tế, ftell () cung cấp nhiều hơn một kết quả không xác định cho các luồng chỉ nối thêm; nó cung cấp phần bù từ phần cuối của tệp như được xác định trước khi bất kỳ dữ liệu nào được thêm vào. Vì vậy, nếu bạn mở một tệp có 3017 ký tự và nối thêm 41 ký tự, sau đó thực thi ftell (), giá trị được trả về sẽ là 41.
  •  

 

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 ftell() 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

    Rate this post

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

    Xem thêm