Đọc và ghi file trong php - lập trình PHP cơ bản

Saturday, October 25, 2014

Đọc và ghi file trong php là một thế mạnh của ngôn ngữ lập trình php các ban sẽ áp dụng đọc và ghi file để sử dụng nhiều việc chẳng hạn là : tạo playlist cho website bằng php chẳng hạn

 

Mở file

hàm fopen() là hàm dùng để mở file trong PHP.
Tham số đầu tiên của hàm này nhận vào tên file sẽ được mở, tham số thứ hai dùng để nói cho PHP biết chúng ta sẽ sử dụng file này với mục đích gì: đọc, ghi, sửa, … tạm gọi là Mode.
<html>
<body>

<?php
   $file=fopen("welcome.txt","r");
?>

</body>
</html>
Sau khi hàm fopen() thực thi sẽ trả về giá trị gọi là handle (cán). Ta phải lưu trị này vào biến để thao tác với file đã mở này. Những mode có thể dùng khi mở file:
ModeMiêu tả
rChỉ mở để đọc. Đọc từ đầu file.
r+Đọc và ghi. Cũng bắt đầu đọc ghi từ đầu file.
wChỉ mở file để ghi. Cụ thể hơn là mở file và xóa toàn bộ nội dung trong file; hoặc tạo mới nếu file đó chưa có và tiến hành ghi. Không cần biết trước đó đã có dữ liệu gì.
w+Đọc và ghi. Mở và xóa toàn bộ nội dung file. Tạo mới nếu file chưa tồn tại.
aGhi tiếp. Tức mở file và ghi vào cuối file. File sẽ được tạo nếu file đó chưa tồn tại.
a+Đọc và ghi tiếp. Đọc nội dung file từ đầu, và ghi nội dung mới vào cuối file.
xChỉ ghi. Tạo file mới và ghi vào file đó. Trả về FALSE và báo lỗi khi file này đã tồn tại.
x+Đọc và ghi. Tạo file mới hoàn toàn. Trả về False và báo lỗi nếu file này đã tồn tại.
Ghi chú
Nếu fopen() không mở được file chỉ định thì nó sẽ trả về trị là 0, tức là False. Bạn có thể dùng trị này với if để kiểm tra file có được mở thành công hay không trước khi thực hiện thao tác tiếp theo.

Ví dụ

Ví dụ dưới đây sẽ đưa ra một thông điệp nếu hàm fopen() không mở được file:
<html>
<body>

<?php
   $file=fopen("welcome.txt","r") or exit("Không mở được file!");
?>

</body>
</html>

Đóng file

Hàm fclose() dùng để đóng một file đã mở:
<?php

$file = fopen("test.txt","r");

// Thực thi một số code nào đó và đóng file

fclose($file);

?>
Đóng file giúp giải phong tài nguyên mà PHP đã dùng để thực hiện đọc ghi file. Đồng thời sẽ trả file này về trạng thái sẵn sàng, như vậy ứng dụng khác hay code php khác có thể đọc và sử dụng file này.

Kiểm tra End-of-file

Hàm feof() dùng để kiểm tra xem đã xảy ra “end-of-file” (EOF) hay chưa. EOF là một thuật ngữ dùng để ám chỉ việc đã đọc đến cuối file. Tức đã hết nội dung để đọc.
Hàm feof() vô cùng hữu ích khi dùng vòng lặp để đọc file mà ta không biết được chính xác kích thước của file là bao nhiêu.
Lưu ý:
Bạn không thể đọc những file mở bằng mode là w, a, và x
if (feof($file)) echo "Đọc hết file rồi";</div>

Đọc file từng dòng một

Hàm fgets() dùng để đọc một dòng trong file. Mỗi lần bạn gọi hàm này, thì hàm sẽ trả về dòng vừa đọc đồng thời sẽ dời con trỏ đọc file sang dòng mới. Nếu bạn gọi hàm này thêm lần nữa, nó sẽ đọc tiếp dòng tiếp theo, và cứ như thế.

Ví dụ mẫu

Ví dụ sau đọc từng dòng một trong file cho tới khi hết file:
<?php
$file = fopen("welcome.txt", "r") or exit("Không mở được file!");
// Echo ra dòng vừa đọc, cho tới khi đọc hết file
while(!feof($file))
  {
  echo fgets($file). "<br>";
  }
fclose($file);
?>

Đọc từng ký tự một

Hàm fgetc() dùng để đọc một ký tự từ file. Tương tự đọc từng dòng. Sau khi gọi hàm fgetc(), con trỏ đọc file sẽ dời sang ký tự tiếp theo, và nếu gọi hàm thêm lần nữa nó sẽ đọc ký tự tiếp theo.

Ví dụ mẫu

Ví dụ bên dưới đọc từng ký tự một cho đến cuối file.
<?php
$file=fopen("welcome.txt","r") or exit("Không mở được file!");
while (!feof($file))
  {
  echo fgetc($file);
  }
fclose($file);
?>
Hàm fgetc() đọc luôn cả ký tự xuống dòng, nên trong code ta k cần thêm “\n”.

Đọc toàn bộ nội dung file

Hàm file_get_contents() dùng để đọc toàn bộ nội dung file để đưa vào biến.

Ví dụ mẫu

Ví dụ dưới sẽ xuất ra toàn bộ nội dung của file.
<?php
echo file_get_contents("test.txt");
?>

Ghi vào file

Hàm fwrite dùng để ghi nội dung vào file. File sẽ bị ghi đè, hay ghi tiếp theo vào cuối file là tùy thuộc vào mode mà bạn chọn khi chạy hàm fopen().

Ví dụ mẫu

<?php

$file = fopen("welcome.txt","w+");
fwrite($file, "Chào các bạn");

?>
Ví dụ trên sẽ ghi vào file welcome.txt nội dung “Chào các bạn”. Nếu file này đã có nội dung khác trước đó, thị nội dung cũ đó sẽ bị xóa hết. Và PHP tiến hành ghi nội dung mới. Nêu file chưa tồn tại, thì file welcome.txt sẽ được tạo mà không xảy ra lỗi gì.
Nêu mình thay “w+” bằng “a” hoặc “a+” thì fwrite sẽ ghi vào cuối file chứ không xóa nội dung cũ của file.

No comments:

Post a Comment