Hướng dẫn php readfile - tệp đọc php

Hàm readfile() sẽ đọc file được truyền vào. In kết quả đọc được ra màn hình.

Hướng dẫn php readfile - tệp đọc 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.freetuts.net, không được copy dưới mọi hình thức.

Cú pháp

Cú pháp: readfile( $filename, $use_include_path , $context );readfile( $filename, $use_include_path , $context );

Trong đó::

  • $filename là đường dẫn tới file cần đọc.
  • $use_include_path là tham số quy định việc tìm kiếm file trong include_path.
  • $context thường được bỏ qua nếu bạn không sử dụng ngữ cảnh đặc biệt.

Kết quả trả về

Hàm sẽ trả về số byte đã đọc được, nếu có lỗi xảy ra hàm sẽ trả về False.False.

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

Ví dụ

Ví dụ về cách sử dụng hàm readfile():

Code

$path = 'test.txt';
file_put_contents('test.txt', 'this a test');
readfile($path);

Tham khảo: php.net

Trong bài học trước chúng ta đã tìm hiểu kiến thức về form và cách xử lý giá trị form trong PHP. Trong bài viết này, tôi sẽ giới thiệu phương thức làm việc với file trong PHP. Đây là kiến thức không thể thiếu đối với bất kỳ người lập trình nào khi quyết định thiết kế website bằng ngôn ngữ PHP. Dưới đây là một số thông tin sẽ trình bày trong bài viết này.form và cách xử lý giá trị form trong PHP. Trong bài viết này, tôi sẽ giới thiệu phương thức làm việc với file trong PHP. Đây là kiến thức không thể thiếu đối với bất kỳ người lập trình nào khi quyết định thiết kế website bằng ngôn ngữ PHP. Dưới đây là một số thông tin sẽ trình bày trong bài viết này.

  • Giới thiệu cách thức làm việc với file
  • Mở một file trong PHP bằng hàm readfile()
  • Mở một file trong PHP bằng hàm fopens()

Giới thiệu cách thức làm việc với file

Mở một file trong PHP bằng hàm readfile()

Mở một file trong PHP bằng hàm fopens()dictionary.txt, các bạn có thể download tại đây.

Việc mở các tập tin văn bản gốc hoặc tập tin CSV thật sự cần thiết đối với bạn cũng như các lập trình viên khác. Không phải lúc nào việc lập trình cũng đòi hỏi phải có database với nhiều bảng, do vậy ý tưởng lưu trữ dữ liệu trong các file text đơn giản có thể xem là sự lựa chọn tối ưu. Đặc biệt là trong trường hợp Web Hosting không cho phép bạn tạo database.

Trong phần này, chúng ta sẽ xem xét các cách khác nhau để thao tác file trong PHP. Chúng ta sẽ bắt đầu mở một file văn bản gốc dictionary.txt, các bạn có thể download tại đây. = Alive and smiling 
ADN = Any day now 
AEAP = As early as possible 
AFAIK = As far as I know 
AFK = Away from keyboard 
AKA = Also known as

Khi mở file này ra và xem nội dung, ta thấy như thế này :

AAS = Alive and smiling ADN = Any day now AEAP = As early as possible AFAIK = As far as I know AFK = Away from keyboard AKA = Also known as

Mở một file trong PHP bằng hàm readfile()

Mở một file trong PHP bằng hàm fopens()readfile(), hàm này có tác dụng đọc nội dung của file.

Việc mở các tập tin văn bản gốc hoặc tập tin CSV thật sự cần thiết đối với bạn cũng như các lập trình viên khác. Không phải lúc nào việc lập trình cũng đòi hỏi phải có database với nhiều bảng, do vậy ý tưởng lưu trữ dữ liệu trong các file text đơn giản có thể xem là sự lựa chọn tối ưu. Đặc biệt là trong trường hợp Web Hosting không cho phép bạn tạo database.

Trong phần này, chúng ta sẽ xem xét các cách khác nhau để thao tác file trong PHP. Chúng ta sẽ bắt đầu mở một file văn bản gốc dictionary.txt, các bạn có thể download tại đây.*.php và đặt cùng thư mục với file dictionary.txt. Hãy chạy code này và kết quả là bạn sẽ thấy màn hình chứa đầy văn bản, không có đấu phân cách và xuống dòng.

Khi mở file này ra và xem nội dung, ta thấy như thế này :

AAS = Alive and smiling ADN = Any day now AEAP = As early as possible AFAIK = As far as I know AFK = Away from keyboard AKA = Also known as

Thật ra đây là một danh sách dài các giá trị tách nhau bởi dấu “=”. Bên trái dấu “=” là cụm từ viết tắt, bên phải là nghĩa của nó.readfile("dictionary.txt");

Giờ chúng ta sẽ mở file văn bảng này bằng mã PHP, bạn sẽ thấy được các cách khác nhau để mở và làm việc với file text này.

Để mở một file, bạn có thể dùng nhiều cách. Cách đầu tiên là chúng ta dùng hàm readfile(), hàm này có tác dụng đọc nội dung của file. = "dictionary.txt";
          print readfile($file_to_read);

Các bạn thử đoạn script sau :

Lưu đoạn script trên thành file *.php và đặt cùng thư mục với file dictionary.txt. Hãy chạy code này và kết quả là bạn sẽ thấy màn hình chứa đầy văn bản, không có đấu phân cách và xuống dòng.trường hợp file đặt không cùng thư mục
           print readfile($file_to_read);

Bạn cũng có thể thay thế 02 dòng code trên bằng các cách sau :readfile() có tác dụng mở một file và đọc nội dung của file đó.

Cách 01 :file_get_contents(). Hàm này có sẵn ở phiên bản PHP 4.3 trở lên.

          print readfile("dictionary.txt");

Cách 02 :
          print file_get_contents( $file_to_read );

             $file_to_read = "dictionary.txt";           print readfile($file_to_read);

Mở một file trong PHP bằng hàm fopens()

Việc mở các tập tin văn bản gốc hoặc tập tin CSV thật sự cần thiết đối với bạn cũng như các lập trình viên khác. Không phải lúc nào việc lập trình cũng đòi hỏi phải có database với nhiều bảng, do vậy ý tưởng lưu trữ dữ liệu trong các file text đơn giản có thể xem là sự lựa chọn tối ưu. Đặc biệt là trong trường hợp Web Hosting không cho phép bạn tạo database.fopen(). Hàm này cho phép bạn có nhiều tuỳ chọn hơn như mở file với thuộc tính chỉ đọc, hoặc chỉ ghi, và một số thuộc tính khác.

Trong phần này, chúng ta sẽ xem xét các cách khác nhau để thao tác file trong PHP. Chúng ta sẽ bắt đầu mở một file văn bản gốc dictionary.txt, các bạn có thể download tại đây.

Khi mở file này ra và xem nội dung, ta thấy như thế này :fopen( "dictionary.txt", "r" );
         print $file_contents;
         fclose($file_contents);

AAS = Alive and smiling ADN = Any day now AEAP = As early as possible AFAIK = As far as I know AFK = Away from keyboard AKA = Also known as

Thật ra đây là một danh sách dài các giá trị tách nhau bởi dấu “=”. Bên trái dấu “=” là cụm từ viết tắt, bên phải là nghĩa của nó.

Giờ chúng ta sẽ mở file văn bảng này bằng mã PHP, bạn sẽ thấy được các cách khác nhau để mở và làm việc với file text này.

Để mở một file, bạn có thể dùng nhiều cách. Cách đầu tiên là chúng ta dùng hàm readfile(), hàm này có tác dụng đọc nội dung của file.fopen() thực sự không đọc nội dung của file. Tất cả những gì nó làm là thiết lập con trỏ trong file mà bạn muốn mở ra và trả về giá trị file handle (con trỏ file), bạn quan tâm tới giá trị này để lưu lại vị trí của file.

Các bạn thử đoạn script sau :fget(). Hàm fget() có tác dụng đọc một số lượng ký tự xác định trên từng dòng, thường thì ta sử dụng vòng lặp để đọc từng dòng văn bản.

Trong ví dụ sau, chúng ta sẽ thực hiện in ra từng dòng riêng biệt. Khi bạn sử dụng hàm fget(), bạn cần kiểm tra khi nào sẽ kết thúc file bằng cách sử dụng hàm feof().fget(), bạn cần kiểm tra khi nào sẽ kết thúc file bằng cách sử dụng hàm feof().

Ví dụ :

             $file_handle = fopen("dictionary.txt", "r");

             while (!feof($file_handle)) {

             $line_of_text = fgets($file_handle);              print $line_of_text . "";
             print $line_of_text . "
";

             }

            fclose($file_handle);

         ?>

Sau khi chạy script này bạn sẽ thấy nội dung in ra trên từng dòng riêng biệt. Nhưng cách nó làm việc như thế nào ?

Ở dòng lệnh dầu tiên :

         $file_handle = fopen( "dictionary.txt", "r" );fopen( "dictionary.txt", "r" );

Ở đây chúng ta yêu cầu PHP mở ra một file và ghi nhớ vị trí của nó. Vị trí được lưu trữ như một file handle. Chúng ta gán gia trị này cho biến @file_handle. Thực ra thì chúng ta chưa đọc nội dung của file mà chỉ mới yêu cầu PHP ghi nhớ file này ở đâu thôi.

Ở dòng tiếp theo là vòng lặp :

            while () {

            }

Điều kiện của vòng lặp là

            !feof( $file_handle ) $file_handle )

Lưu ý, vòng lặp while sẽ lặp đi lặp lại cho đến khi bạn yêu cầu nó dừng lại. Nó sẽ lặp đi lặp lại khi điều kiện đúng. Điều kiện giữa hai dấu ngoặc trông khá lạ : !feof.

Hàm feof() có nghĩa là file end of file, có tác dụng báo khi nào kết thúc file. Bạn đặt file giữa hai dấu ngoặc đơn của hàm :feof() có nghĩa là file end of file, có tác dụng báo khi nào kết thúc file. Bạn đặt file giữa hai dấu ngoặc đơn của hàm :

             feof( $file_handle ) $file_handle )

Chúng ta dùng toán tử NOT (!) để duy trì vòng lặp khi chưa duyệt tới cuối file.

          while ( !feof( $file_handle ) ) {!feof( $file_handle ) ) {

          }

Giải thích : khi chưa kết thúc file, vòng lặp sẽ trỏ đến $file_handle. Khi kết thúc file, vòng lặp sẽ dừng lại. : khi chưa kết thúc file, vòng lặp sẽ trỏ đến $file_handle. Khi kết thúc file, vòng lặp sẽ dừng lại.

Bên trong vòng lặp, dòng đầu tiên là :

          $line_of_text = fgets( $file_handle );fgets( $file_handle );

Ta sử dụng hàm fgets để lấy một dòng text từ file. Chúng ta lại sử dụng file handle :

             fgets( $file_handle ); $file_handle );

Như vậy chúng ta sẽ lấy một dòng từ file, gán dòng đó vào một biến, sau đó ta in nó ra :

          print $line_of_text . "";print $line_of_text . "
";

Dòng cuối cùng của code là

             fclose( $file_handle ); $file_handle );

Dòng này có tác dụng đóng file lại, nó báo cho PHP biết rằng con trỏ file không cần thiết nữa. Bạn lưu ý phải luôn đóng file khi mở file bằng fopen().fopen().

Một điểm cần lưu ý là hàm fgets() còn có thêm một cú pháp liên quan đến kích thước của dòng text :

          fgets($file_handle, line_size);fgets($file_handle, line_size);

Kích thước của dòng text được tình bằng đơn vị byte, mặc định là 1024 byte. Kích thước này chỉ cho phép có hoặc không từ phiên bản PHP 4.2 trở đi, nếu phiên bản PHP thấp hơn thì bạn sẽ nhận thông báo lỗi nếu bỏ qua thông số line_size

          fgets($file_handle, 1024);fgets($file_handle, 1024);

Nếu bạn thật sự muốn gói gọn nhiều thông tin trên một dòng, thì bạn có thể tăng chỉ số line size.

Vận dụng các nội dung trên ta có thể tạo bộ đếm lượt truy cập trong PHP, đây là ứng dụng được sử dụng trong khá nhiều website hiện nay.bộ đếm lượt truy cập trong PHP, đây là ứng dụng được sử dụng trong khá nhiều website hiện nay.