Chủ đề nổi bật

Bài 22: Các hàm xử lý file trong php

Việc xử lý file trong php rất quan trọng vì trong các ứng dụng thực tế ta hay dùng file để lưu trữ dữ cache cho website hoặc là lưu trữ một ...

Việc xử lý file trong php rất quan trọng vì trong các ứng dụng thực tế ta hay dùng file để lưu trữ dữ cache cho website hoặc là lưu trữ một thứ gì đó để cho nhằm giúp ứng dụng chạy nhanh hơn, vì thế tôi viết bài này giúp các bạn làm quen với một số hàm liên quan đến file như đọc file, ghi file, tạo folder mới, xóa folder, xóa file. Trong bài này tôi không đề cập đến vấn đề upload file.

1. Mở file

Để mở một file ta dùng cú pháp sau: open($path, $option). Trong đó $path là đường dẫn đến file cần mở, $option là quyền cho phép thao tác trên file.

Ta có danh sách các quyền sau:

Mode Diễn giải
r Read only
r+ Read + Write
w Write only
w+ Write + Read. Nếu file này tồn tại thì nội dung cũ sẽ bị xóa đi và ghi lại nội dung mới, còn nếu file chưa tồn tại thì nó tạo file mới
a Mở dưới dạng append dữ liệu, chỉ có write và nếu file tồn tại nó sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới
a+ Mở dưới dạng append dữ liệu, bao gồm write và read. Nếu file tồn tại nó sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới
b Mở dưới dạng chế độ binary

Ví dụ:

// Mở một file, ta dùng dấu @ đặt trước hàm fopen
// để phòng trường hợp đường dẫn $path ta truyền
// vào bị sai nó sẽ không bung lỗi ra màn hình.
// Đường dẫn $path có thể là đường dẫn tương đối
// hoặc tuyệt đối đều được
 
$path = 'demo.txt';
$fp = @fopen($path, "r");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else{
    echo 'Mở file thành công';
}

2. Đọc file

BẢNG MÃ KÍCH HOẠT KHÓA HỌC RẤT RẺ

Mình đã sưu tầm các mã giám giá rất rẻ và đăng nó ơ trong bài viết này, bạn hãy vào tham khảo để xem cần kháo nào thì hãy chọn cho riêng mình nhé, Lưu ý la chỉ có tại code24h.com, bạn sẽ không thể tìm thấy ở chỗ khác.

Xem Ngay

Có 3 cách đọc file thông thường trong PHP đó là đọc từng dòng, đọc từng ký tự và đọc hết file.

Ta dùng hàm fgetc($fp) để đọc theo từng ký tự, dùng fgets($fp) để đọc theo từng dòng. Đối với đọc từng dòng và đọc từng ký tự ta phải dùng hàm feof($fp) đặt trong vòng lặp while để sau khi đọc xong nó sẽ chuyển sang dòng mới hoặc ký tự mới.

Để đọc hết tất cả file ta dùng hàm fread($fp, $size), trong đó $fp là đối tượng lúc mở file còn $size là kích cỡ của file cần đọc. Để lấy kích cỡ của file cần đọc ta dùng hàm filesize($path).

Ví dụ: Đọc file từng ký tự

$fp = @fopen('demo.txt', "r");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    // Lặp qua từng ký tự để đọc
    while(!feof($fp))
    {
        echo fgetc($fp);
    }
}

Ví dụ: Đọc file từng dòng

$fp = @fopen('demo.txt', "r");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    // Lặp qua từng dòng để đọc
    while(!feof($fp))
    {
        echo fgets($fp);
    }
}

Ví dụ: Đọc hết file

$fp = @fopen('demo.txt', "r");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    // Đọc file và trả về nội dung
    $data = fread($fp, filesize('demo.txt'));
    echo $data;
}

3. Ghi file

Để ghi nội dung vào file ta dùng hàm fwrite($fp, $content) trong đó $fp là đối tượng trả về lúc mở file, còn $content là nội dung muốn ghi vào.

Việc ghi file phụ thuộc vào lúc bạn mở file như thế nào. Ví dụ lúc bạn mở file ghi đè thì lúc ghi file nó sẽ ghi đè, lúc bạn mở file ghi kiểu append thì lúc ghi file nó sẽ thêm xuống cuối file, nếu bạn mở file chỉ cho đọc thì bạn không thể ghi file được.

Ví dụ:

$fp = @fopen('demo.txt', "w");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    $data = 'code24h.com file functions tutorial';
    fwrite($fp, $data);
}

4. Đóng File

Việc mở file để sử dụng mà không đóng file rất nguy hiểm, vì thế sau khi sử dụng xong bạn nên đóng file để an toán hơn. Để đóng file ta dùng hàm fclose($fp) trong đó $fp là đối tượng trả về lúc bạn mở file.

Ví dụ:

$fp = @fopen('demo.txt', "w");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    $data = 'code24h.com file functions tutorial';
    // Ghi file
    fwrite($fp, $data);
 
    // Đóng file
    fclose($fp);
}

5 Các hàm xử lý file khác

Sau đây là một số hàm xử lý file khác.

Kiểm tra file có tồn tại không

Ta dùng hàm file_exists($path), trong đó $path là đường dẫn đến file cần kiểm tra, ví dụ:

if (file_exists('demo.txt'))
{
    echo 'File tồn tại';
}

Kiểm tra file có được cấp quyền ghi không

a dùng hàm is_writable ($path) trong đó $path là đường dẫn đến file cần kiểm tra .

Ví dụ:

$fp = @fopen('demo.txt', "w");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    if (is_writable ('demo.txt')){
        fwrite($fp, 'Welcome');
    }
    fclose($fp);
}

Lấy nội dung một file mà không cần dùng hàm fread

Ta dùng hàm  file_get_contents($path) để lấy nội dung của một file, trong đó $path là đường dẫn đến file cần lấy. $path có thể là đường link đến một trang web trên internet thì nó sẽ trả về nội dung html của trang web đó.

Ví dụ:

// Lấy nội dung file txt
echo file_get_contents('demo.txt');
 
// Lấy nội dung đường link http://www.code24h.com
echo file_get_contents('http://www.code24h.com');

Ghi nội dung file mà không cần dùng hàm fwrite

Trước khi dùng hàm này bạn nên dùng hàm is_writable để kiểm tra file có được phép ghi không.

Ta dùng hàm file_put_contents($path, $noidung) để ghi nội dung cho một file, trong đó $path là đường dẫn đến file cần ghi, $noidung là nội dung bạn muốn ghi vào file.

Ví dụ:

file_put_contents('demo.txt', 'noi dung');

Đổi tên file

Để đổi tên file ta dùng hàm rename($oldname, $newname), trong đó $oldname là đường dẫn đến file cần đổi tên, $newname là đường dẫn mới có kèm tên file cần đổi . Nếu bạn chỉ muốn đổi tên thôi thì đường dẫn của cả 2 biến giống nhau, chỉ khác nhau ở cái tên file. Nếu tên file mới bị trùng thì file đó sẽ bị ghi đè.

Ví dụ:

rename('demo.txt', 'demo2.txt');

Copy file

Để copy sang file mới ta dùng hàm copy($source, $dest), trong đó $source là path file cần copy và $dest là path file cần di chuyển tới. Nếu bạn muốn đổi luôn tên thì đường dẫn $dest bạn khai báo một cái tên khác.

Ví dụ:

if (!copy('demo2.txt', 'demo3.txt'))
{
    echo 'Copy thất bại';
}

Xóa file

Ta dùng hàm unlink($path) để xóa file, trong đó $path là đường dẫn đến file cần xóa, ví dụ:

if (file_exists('demo.txt'))
{
    unlink('demo.txt');
}

Kiểm tra một đường dẫn folder có tồn tại không

Ta dùng hàm is_dir($filename), trong đó $filename là đường dẫn đến folder cần kiểm tra.

Ví dụ:

if(is_dir('system')){
    echo 'Folder Tồn Tại';
}

Tạo một folder mới

Ta dùng hàm mkdir($path) để tạo folder mới, trong đó $path là đường dẫn đến folder cần tạo. Bạn lưu ý folder cuối cùng chính là tên folder bạn cần tạo và tất cả các folder trước nó bạn chắc chắn là phải có, nếu không sẽ bị lỗi.

Ví dụ:

// Kiểm tra folder parent chưa có chưa, nếu có thì tạo folder con
if(is_dir('parent/sub')){
    mkdir('parent/sub');
}

6. Lời kết

Trên là những hàm xử lý file hay dùng, vì tôi không thể liệt kê hết được nên nếu bạn muốn tham khảo thêm thì vào đây để xem thêm. Bài tiếp theo chúng ta sẽ học làm thế nào để upload file trong PHP.

BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan
Mới nhất

Danh sách các múi giờ (Timezones) trong PHP

- Múi giờ (timezones) thường được sử dụng trong các hàm xử lý ngày tháng & thời gian. - Dưới đây là danh sách đầy đủ các múi giờ được hỗ trợ trong ngôn ngữ lập trình PHP. 1) Africa Africa/Abidjan Africa/Accra Africa/Addis_Ababa Africa/Algiers 2) America ...

Các hàm dùng để quản lý thư mục trong PHP

Hàm Mô tả chức năng chdir() chroot() closedir() dir() getcwd() opendir() readdir() rewinddir() scandir() ...

Danh sách tất cả các hàm xử lý chuỗi trong PHP

Hàm Mô tả chức năng addcslashes() Thêm một dấu gạch chéo ngược () phía trước các ký tự được chỉ định addslashes() Thêm một dấu gạch chéo ngược () phía trước các ký tự là dấu nháy kép, dấu nháy đơn và dấu gạch chéo ngược trong chuỗi bin2hex() Chuyển một chuỗi các ký tự ...

Cách khai báo và sử dụng hàm (function) trong PHP

1) Hàm là gì !? - Hàm là một tập hợp gồm nhiều câu lệnh, các câu lệnh này được sắp xếp theo một thứ tự xác định để xây dựng thành một chức năng cụ thể và mỗi hàm sẽ có một cái tên. Ví dụ Đoạn mã bên dưới, chúng ta có một hàm tên là GioiThieuBanThan. Hàm này gồm ba câu lệnh với ...

Vòng lặp for & foreach trong PHP

1) Vòng lặp là gì !? - Trong PHP, vòng lặp là một loại cú pháp giúp ta lặp lại việc thực thi một đoạn mã nhiều lần. - Ví dụ, nếu tôi muốn hiển thị lên màn hình 100 dòng chữ "Lập Trình Web" thì đáng ra phải gõ 100 câu lệnh echo "<p>Lập Trình Web</p>"; . Tuy nhiên, với việc sử ...

Lệnh điều kiện if ... else trong PHP

"Nếu bạn học tốt môn lập trình web thì bạn sẽ có thể thiết kế được website" - Câu trên được chia làm hai vế: Vế thứ nhất: "Nếu bạn học tốt môn lập trình web" Vế thứ hai: "Bạn sẽ có thể thiết kế được website" - Trong cuộc sống, ta gọi vế thứ nhất là điều kiện, vế thứ hai là một điều ...

Danh sách tất cả các hàm xử lý mảng trong PHP

Hàm Mô tả chức năng array_change_key_case Đổi tên của tất cả các phần tử trong mảng về dạng chữ in hoa hoặc chữ thường array_chunk array_column array_combine array_count_values array_diff array_diff_assoc array_diff_key ...

Danh sách các hàm xử lý tập tin hệ thống trong PHP

Hàm Mô tả chức năng basename() Trả về tên tập tin từ một đường dẫn chgrp() Thay đổi nhóm người dùng của tập tin được chỉ định chmod() Thiết lập quyền hạn của các nhóm người dùng trên tập tin được chỉ định chown() Thay đổi chủ sở hữu của một tập tin copy() Sao ...

Danh sách tất cả các hàm xử lý ngày tháng trong PHP

Hàm Mô tả chức năng checkdate Kiểm tra xem một ngày được xác định có hợp lệ hay không date date_add date_create date_create_from_format data_create_immutable data_create_immutable_from_format date_date_set date_default_timezone_get ...

Vòng lặp while & do while trong PHP

1) Vòng lặp while trong PHP - Trước khi nêu khái niệm "vòng lặp while là gì?" thì tôi có một ví dụ để giúp bạn có thể hình dung sơ qua về vòng lặp while. - Bạn đưa ra một điều kiện, nếu điều kiện đó là sai thì kết thúc, còn nếu đúng thì một đoạn mã sẽ được thực thi và bạn tiếp tục quay ...