Hàm fread() trong php là gì?

Fopen[], đối với nhiều người, là một chức năng cực kỳ phức tạp để sử dụng. Lý do cho điều này là vì nó là một trong những hàm khác được lấy trực tiếp từ C và do đó không thân thiện với người dùng như hầu hết các hàm PHP. Mặt khác, như thường lệ, thực tế là fopen[] là một chức năng cực kỳ linh hoạt mà một số người yêu thích vì khả năng thao tác các tệp theo ý muốn của nó.

Fopen[] có hai tham số chính. tệp cần mở và cách bạn muốn tệp được mở. Tham số một rất dễ dàng - nó chỉ là $filename, cũng như các ví dụ khác. Tham số hai là điều làm cho fopen[] trở nên đặc biệt. bạn chỉ định các chữ cái trong một chuỗi xác định xem bạn muốn đọc từ ["r"], ghi vào ["w"] hay nối vào ["a"] tệp được chỉ định trong tham số một. Ngoài ra còn có tùy chọn thứ tư, "b", mở tệp ở chế độ nhị phân. Điều này không cần thiết trên các hệ thống dựa trên Unix, nhưng nó có trên Windows, vì vậy tốt nhất nên sử dụng nó ở mọi nơi - nó hoàn toàn không gây bất lợi cho các hệ thống dựa trên Unix

Hãy xem các cách sử dụng sau


Fopen[] trả về tài nguyên xử lý tệp, về cơ bản là nội dung của tệp. Bạn không thể xuất nó trực tiếp, e. g. "in fopen[. ]", nhưng tất cả các hàm liên quan đến fopen[] đều chấp nhận các xử lý tệp làm tệp để làm việc, vì vậy bạn nên lưu trữ giá trị trả về của fopen[] trong một biến để sử dụng sau này. Do đó, đây là cách sử dụng đầy đủ của fopen[]


Nếu tệp không mở được, fopen[] trả về false. Nếu tệp được mở thành công, phần xử lý tệp sẽ được trả về và bạn có thể tiếp tục

Khi trình xử lý tệp đã sẵn sàng, chúng ta có thể gọi các chức năng khác trên tệp đã mở, tùy thuộc vào cách tệp được mở [tham số thứ hai của fopen[] ]. Để đọc từ một tệp, hàm fread[] được sử dụng và để ghi vào tệp fwrite[] được sử dụng. Hiện tại, chúng tôi đang quan tâm đến việc đọc, vì vậy bạn nên sử dụng "rb" cho tham số thứ hai của hàm fopen[]

Fread[] nhận hai tham số. xử lý tệp để đọc [đây là giá trị trả về từ fopen[], hãy nhớ] và số byte cần đọc. Tham số thứ hai có thể không có ý nghĩa lúc đầu, sau tất cả, bạn thường muốn đọc trong tất cả các tệp, phải không?

Ghi chú của tác giả. Đừng lo lắng về việc chỉ định một số trong tham số hai lớn hơn tệp - PHP sẽ ngừng đọc khi nó chạm vào cuối tệp hoặc số byte trong tham số hai, tùy theo điều kiện nào đến trước

Chà, mặc dù có khả năng là bạn thực sự muốn đọc tất cả một tệp, nhưng làm như vậy yêu cầu bạn phải có đủ bộ nhớ để có thể đọc toàn bộ tệp cùng một lúc - nếu bạn đang làm việc với các tệp có dung lượng vài megabyte hoặc thực tế là hàng trăm . Trong những trường hợp như thế này, bạn chỉ có hai lựa chọn. mua thêm RAM hoặc phân tích dữ liệu của bạn theo trình tự

May mắn thay, hầu hết mọi người sẽ không phải đưa ra lựa chọn đó - hầu hết mọi người làm việc với các tệp văn bản có kích thước dưới megabyte và PHP có thể tải tất cả tệp megabyte cùng một lúc trong một phần rất nhỏ của giây. Để hướng dẫn PHP sử dụng fread[] để đọc toàn bộ nội dung của tệp, bạn chỉ cần chỉ định kích thước tệp chính xác theo byte của tệp đó làm tham số hai cho fread[]. Âm thanh khó khăn?

Khi đọc trong một tệp, PHP sử dụng một con trỏ tệp để xác định byte hiện tại - giống như con trỏ mảng. Mỗi lần bạn đọc một byte, PHP sẽ đẩy con trỏ mảng lên một vị trí - đọc toàn bộ tệp cùng một lúc sẽ đẩy con trỏ mảng đến cuối tệp

Vì vậy, để sử dụng fread[] để đọc toàn bộ tệp, chúng ta có thể sử dụng dòng sau


Lưu ý rằng giá trị trả về của fread[] là văn bản mà nó đọc vào và trong tình huống trên, đó là toàn bộ tệp. Để hoàn tất việc sử dụng fread[], bạn chỉ cần đóng tệp ngay sau khi hoàn thành

Ghi chú của tác giả. Mặc dù PHP tự động đóng tất cả các tệp bạn để mở trong tập lệnh của mình, nhưng sẽ không thông minh khi dựa vào nó để làm như vậy - đó là cách sử dụng tài nguyên kém và có thể ảnh hưởng đến các quy trình khác đang cố đọc tệp. Luôn luôn, luôn luôn, luôn đóng các tệp của bạn ngay khi bạn hoàn thành chúng

Để đóng tệp bạn đã mở bằng fopen[], hãy sử dụng fclose[] - hàm này nhận phần xử lý tệp mà chúng tôi nhận được từ fopen[] và trả về giá trị true nếu có thể đóng tệp thành công. Bây giờ chúng ta đã có đủ để sử dụng fopen[] để mở và đọc hoàn toàn trong một tệp, sau đó đóng nó. Đây là kịch bản


Đầu tiên, hãy nhớ rằng bạn sẽ cần đặt $filename làm vị trí của tệp trên hệ thống mà bạn có quyền truy cập. Thứ hai, lưu ý rằng fopen[] được gọi với "fb" là tham số thứ hai - chỉ đọc, an toàn nhị phân. Luôn sử dụng "b" để đảm bảo khả năng tương thích với máy chủ Windows. Thứ ba, lưu ý rằng filesize[] đang được sử dụng để fread[] trong tất cả nội dung của $filename. Cuối cùng, lưu ý rằng fclose[] được gọi trước khi $contents được in - nó được đóng ngay khi $handle không còn cần thiết. Tham gia - và duy trì - thói quen này

Bạn muốn học PHP 7?

Hacking with PHP đã được cập nhật đầy đủ cho PHP 7 và hiện có sẵn dưới dạng PDF có thể tải xuống. Nhận hơn 1200 trang học PHP thực hành ngay hôm nay

Nếu điều này hữu ích, vui lòng dành chút thời gian để nói với những người khác về Hacking với PHP bằng cách tweet về nó

fread trả về PHP là gì?

fread trả về số lượng mục đầy đủ thực sự đã đọc , có thể ít hơn số lượng nếu xảy ra lỗi hoặc nếu hết tệp . Sử dụng hàm feof hoặc ferror để phân biệt lỗi đọc với điều kiện cuối tệp.

Thư viện nào là fread?

Hàm thư viện fread trong C được dùng để đọc các giá trị từ một luồng dữ liệu nhất định và đặt các giá trị đó vào một mảng .

Điểm tương đồng và khác biệt giữa fgets[] và fread[] trong PHP là gì để đưa ra ví dụ phù hợp?

Nếu người dùng muốn đọc một dòng từ tệp văn bản, nên sử dụng chức năng 'fgets'. Mặt khác, nếu người dùng muốn đọc một số dữ liệu [không cần phải là một dòng] từ một tệp, thì có thể sử dụng chức năng 'fread'

Đâu là sự khác biệt giữa fgetsvà fread?

fgets đọc một dòng -- tôi. e. nó sẽ dừng ở một dòng mới. fread đọc dữ liệu thô - nó sẽ dừng sau một số byte được chỉ định [hoặc mặc định], độc lập với bất kỳ dòng mới nào có thể có hoặc không có mặt

Chủ Đề