Hướng dẫn dùng php fread trong PHP

Hàm fread() sẽ đọc nội dung của file truyền vào.

Hướng dẫn dùng php fread trong PHP

Hướng dẫn dùng php fread trong PHP

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Hàm sẽ dừng việc đọc khi:

  • Đã đọc đủ $lenght byte.
  • Đã đọc đến cuối file.
  • Hết thời gian socket timeout.

Cú pháp

Cú phápfread( $filename, $lenght);

Trong đó:

Bài viết này được đăng tại [free tuts .net]

  • $filename là đường dẫn tới file cần đọc nội dung.
  • $lenght là độ dài tối da hàm sẽ đọc.

Kết quả trả về

Hàm trả về nội dung đã đọc được, nếu việc đọc thất bại hàm trả về False.

Ví dụ

Ví dụ về hàm fread():

Code

file_put_contents('test.txt', 'freetuts.net');
$filename = "test.txt";
$handle = fopen($filename, "r");
echo $contents = fread($handle, 8);
fclose($handle);

Tham khảo: php.net

- Hàm fread() dùng để đọc nội dung của một tập tin đang được mở.

- Cú pháp:

fread(file, length)

- Trong đó:

Tham sốYêu cầuMô tả
file Bắt buộc

- Tập tin đang được mở mà bạn muốn đọc nội dung.

length Bắt buộc

- Chỉ định số byte mà bạn muốn đọc.

- Lưu ý: Hàm này sẽ dừng lại tại điểm kết thúc của tập tin hoặc khi đọc đủ số byte được chỉ định, tùy vào điều kiện nào đến trước.

- Tôi có một cây thư mục như sau:

  • myCode.php
  • file
    • text.txt

- Dưới đây là nội dung của tập tin text.txt

Tai lieu huong dan hoc Lap Trinh Web
HTML & CSS
Ngon ngu lap trinh PHP

- Dưới đây là nội dung của tập tin myCode.php

<?php
    $file = fopen("file/text.txt","r");
    $value_01 = fread($file, filesize("file/text.txt"));
    fclose($file);

    $file = fopen("file/text.txt","r");
    $value_02 = fread($file, 20);
    fclose($file);
?>

- Khi đó, biến $value_01 và $value_02 sẽ có giá trị là lần lượt là chuỗi:

Tai lieu huong dan hoc Lap Trinh Web
HTML & CSS
Ngon ngu lap trinh PHP

- Và chuỗi:

Tai lieu huong da

  • Định Nghĩa.
  • Cú pháp.
    • Cú pháp:
    • Trong đó.
    • Giá trị trả về.
  • Ví dụ.
    • Ví dụ # 1 Một ví dụ đơn giản về fread ()
      • code:
    • Ví dụ # 2 ví dụ Binary fread() 
      • Cảnh báo.
      • code.
    • Ví dụ # 3 ví dụ Binary fread()
      • Cảnh báo
      • Code.
  • Ghi chú.
  • Hàm liên quan.
  • Thông tin thêm.

Định Nghĩa.

Hàm fread() sẽ đọc nội dung của file truyền vào. Lưu ý hàm sẽ dừng việc đọc khi:

  • Đã đọc đủ $lenght byte.
  • Đã đọc đến cuối file.
  • Hết thời gian socket timeout.

Cú pháp.

Cú pháp:

fread ( resource $handle , int $length ) : string

Trong đó.

  • $handle là đường dẫn tới file cần đọc nội dung.
  • $length là độ dài tối đa hàm sẽ đọc.

Giá trị trả về.

  • Hàm trả về nội dung đã đọc được, nếu việc đọc thất bại hàm trả về False.

Ví dụ.

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

code:

<?php
// get contents of a file into a string
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

Ví dụ # 2 ví dụ Binary fread() 

Cảnh báo.

  • Trên các hệ thống phân biệt giữa tệp nhị phân và tệp văn bản (tức là Windows), tệp phải được mở với ‘b’ được bao gồm trong tham số chế độ fopen ().

code.

<?php
$filename = "c:\\files\\somepic.gif";
$handle = fopen($filename, "rb");
$contents = fread($handle, filesize($filename));
fclose($handle);
?>

Ví dụ # 3 ví dụ Binary fread()

Cảnh báo

  • Khi đọc từ bất cứ thứ gì không phải là tệp cục bộ thông thường, chẳng hạn như luồng được trả về khi đọc tệp từ xa hoặc từ popen () và fsockopen (), việc đọc sẽ dừng sau khi có sẵn gói. Điều này có nghĩa là bạn nên thu thập dữ liệu cùng nhau theo từng đoạn như trong các ví dụ dưới đây.

Code.

<?php
// For PHP 5 and up
$handle = fopen("http://www.example.com/", "rb");
$contents = stream_get_contents($handle);
fclose($handle);
?>
<?php
$handle = fopen("http://www.example.com/", "rb");
if (FALSE === $handle) {
    exit("Failed to open stream to URL");
}

$contents = '';

while (!feof($handle)) {
    $contents .= fread($handle, 8192);
}
fclose($handle);
?>

Ghi chú.

  • Ghi chú: Nếu bạn chỉ muốn lấy nội dung của tệp thành một chuỗi, hãy sử dụng file_get_contents() vì nó có hiệu suất tốt hơn nhiều so với mã ở trên.
  • Ghi chú: Lưu ý rằng fread () đọc từ vị trí hiện tại của con trỏ tệp. Sử dụng ftell() để tìm vị trí hiện tại của con trỏ và rewind() để tua lại vị trí con trỏ.

Hàm liên quan.

  • fwrite() –  ghi file ở dạng Binary-safe
  • fopen() – Mở một file hoặc một url
  • fsockopen() – Mở kết nối ổ cắm Internet hoặc Unix
  • popen() – Mở con trỏ tệp quá trình
  • fgets() – Lấy dòng từ con trỏ tệp
  • fgetss() – Lấy dòng từ con trỏ tệp và dải thẻ HTML
  • fscanf() – Phân tích cú pháp đầu vào từ một tệp theo định dạng
  • file() – Đọc toàn bộ tập tin thành một mảng
  • fpassthru() – Xuất tất cả dữ liệu còn lại trên một con trỏ tệp
  • ftell() – Trả về vị trí hiện tại của con trỏ đọc / ghi tệp
  • rewind() – Tua lại vị trí của một con trỏ tệp
  • unpack() – Giải nén dữ liệu từ chuỗi nhị phân

Thông tin thêm.

  • Bằng cách nào đó tất cả các mẫu mã để tải xuống, được mô tả ở đây, không phù hợp với tôi. Khi tôi tải xuống một tệp lớn readfile hoặc fread ở chế độ b, tệp cuối cùng không có md5 giống như bản gốc.
    Một số tests giúp tôi, tìm ra giải pháp:
    <?php
                $fp = fopen($DownloadFile, 'rb');
                while ( $cline = fgets($fp) )
                {
                    print $cline;
                }
                fclose($fp);
    ?>
    Bằng cách nào đó, đó là “an toàn nhị phân” và cung cấp tệp được đọc. md5 bản gốc và tải về là như nhau.
  • Lưu ý rằng fread () sẽ trả về ” (chuỗi trống) khi thời gian chờ xảy ra không giống như socket_read () trả về false …
  • Có thể đáng lưu ý rằng nếu trang web của bạn sử dụng bộ điều khiển phía trước với các phiên và bạn gửi một tệp lớn cho người dùng; bạn nên kết thúc phiên ngay trước khi gửi tệp, nếu không người dùng sẽ không thể tiếp tục duyệt trang trong khi tệp đang tải xuống.
  • Liên quan đến [các vấn đề với UTF-8 và] khi tải xuống các tệp Zip, tôi thấy rằng chỉ cần thêm 3 dòng mã trước khi bắt đầu chuyển sang bộ đệm để phân phối trong tất cả các trình duyệt đã giải quyết vấn đề.
    <?php
        ob_end_clean();
        ob_start();
        header( 'Content-Type:' );
    ?>
    xem vị trí được đặt trong hàm bên dưới:
    <?php
    function readfile_chunked( $filename, $retbytes = true ) {
        $chunksize = 1 * (1024 * 1024); // how many bytes per chunk
        $buffer = '';
        $cnt = 0;
        $handle = fopen( $filename, 'rb' );
        if ( $handle === false ) {
            return false;
        }
        ob_end_clean(); //added to fix ZIP file corruption
        ob_start(); //added to fix ZIP file corruption
        header( 'Content-Type:' ); //added to fix ZIP file corruption
        while ( !feof( $handle ) ) {
            $buffer = fread( $handle, $chunksize );
            //$buffer = str_replace("","",$buffer);
            echo $buffer;
            ob_flush();
            flush();
            if ( $retbytes ) {
                $cnt += strlen( $buffer );
            }
        }
        $status = fclose( $handle );
        if ( $retbytes && $status ) {
            return $cnt; // return num. bytes delivered like readfile() does.
        }
        return $status;
    }
    ?>

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