LAB PHP (CB) 8
THAO TÁC VỚI FILE TRONG PHP
A – LÝ THUYẾT
Một trong những tác vụ đặc
biệt của PHP đó là cho phép xử lý dữ liệu trực tiếp thông qua quá trình nhận và
đọc nội dung trên 1 file dữ liệu. Điều này giúp cho PHP trở nên tinh tế và dễ
tùy biến hơn khi xử lý 1 lượng dữ liệu có quy mô lớn. Việc thao tác mở, đọc,
ghi, đóng file này cũng có ý nghĩa tuần tự như bạn đang làm việc trực tiếp trên
1 file dữ liệu thực thụ
I – MỞ VÀ ĐÓNG MỘT FILE TRONG PHP
1 – Mở một File trong PHP
Để mở 1 file ta sử dụng cú pháp sau đây:
Cú pháp:
fopen("Đường dẫn", thuộc tính)
- Đường dẫn:
Chính là đường dẫn tới file cần mở
- Thuộc
tính: bao gồm các quyền hạn cho phép thao tác trên file đó như thế nào
|
Thuộc tính |
Ý nghĩa |
|
r |
Mở File ở chế đô chỉ đọc,
con trỏ đặt đầu File |
|
r+ |
Mở File ở chế độ (cả đọc
lẫn viết), con trỏ đặt đầu File |
|
w |
Mở File ở chế độ chỉ viết,
Nếu File ko tồn tại, nó sẽ được tạo. Nếu File
tồn tại, nội dung sẽ bị xóa. Con trỏ File đặt ở đầu File |
|
w+ |
Mở File ở chế độ (cả viết
lẫn đọc), Nếu File tồn tại, nội dung sẽ bị xóa. Nếu ko tồn tại, File sẽ được tạo. Con trỏ file đặt ở
đầu File |
|
a |
Mở File dưới dạng append dữ liệu, chỉ có viết. Nếu File tồn tại sẽ được ghi tiếp vào sau nội dụng
cũ có sẵn. Nếu File không tồn tại thì sẽ được tạo mới |
|
a+ |
Mở File dưới dạng append dữ liệu, (cả viết và đọc) có viết. Nếu File tồn tại sẽ được ghi tiếp vào
sau nội dụng cũ có sẵn. Nếu File không tồn tại thì sẽ được tạo mới |
|
b |
Mở File dưới chế độ nhị
phân binary |
Bảng các thuộc tính cơ bản
2 – Quá trình đóng lại một
File đã mở
Để đóng một file vừa được mở ta sử dụng cú pháp sau đây:
Cú pháp:
fclose(Mở File);
·
Mở File:
Chính là quá trình mở một File trước đó
II – ĐỌC VÀ GHI FILE TRONG PHP
1 – Quá trình đọc một File
theo hàng trong PHP
Chúng ta sử dụng hàm fgets để đọc nội dung của một
dòng trong file text và trả lại kết quả là dòng đó
Cú pháp sử dụng:
fgets(Mở File);
·
Mở File:
Chính là quá trình mở một File trước đó
Ví dụ:
Tạo một File demo.txt với nội dung như sau:
Do hoa website
Thiet ke web tinh
HTML
Lap trinh web dong
PHP & MySQL
Tạo một File read.php với nội dung như sau:
Chú ý: Để kiểm tra xem đã hết file hay chưa,
ta sử dụng feof. Hàm này trả về giá trị TRUE nếu đã hết file, FALSE
nếu vẫn chưa hết
2 – Quá trình đọc một File
theo ký tự trong PHP
Chúng ta sử dụng hàm fgetc đọc một
ký tự duy nhất trong File và trả lại kết quả là ký tự đó
Cú pháp sử dụng:
fgetc(Mở File);
·
Mở File:
Chính là quá trình mở một File trước đó
Ví dụ:
Tạo một File demo.txt với nội dung như sau:
Do hoa website
Thiet ke web tinh
HTML
Lap trinh web dong PHP & MySQL
Tạo một File read.php với nội dung như sau:
Chú ý: Để
kiểm tra xem đã hết file hay chưa,
ta sử dụng feof. Hàm này trả về giá trị TRUE nếu đã hết file, FALSE
nếu vẫn chưa hết
3 – Quá trình đọc File
theo nhị phân trong PHP
Chúng ta sử dụng hàm fread đọc dữ
liệu nhị phân và trả lại giá trị vào một buffer
Cú pháp sử dụng:
fread(Mở File, filesize(“Đường dẫn File”));
·
Mở File:
Chính là quá trình mở một File trước đó
·
Đường dẫn File: Chính là đường dẫn tới file cần mở
Ví dụ:
Tạo một File demo.txt với nội dung như sau:
Đoc File theo nhi
phan
Tạo một File read.php với nội dung như sau:
4 – Ghi dữ liệu vào một
File trong PHP
PHP cung cấp cho
ta 1 cú pháp nhỏ để ghi dữ liệu vào 1file như sau:
Cú pháp:
fwrite(Mở File, “Nội dung”);
·
Mở File:
Chính là quá trình mở một File trước đó
·
Nội dung:
Chính là nội dung cần ghi vào File
Ví dụ:
B – BÀI TẬP
I – BÀI TẬP THỰC HÀNH
Bài 1:
Sử dụng các hàm thao tác với File để tiến hành tạo một File có tên bai_tap_1.txt, sau đó ghi vào File vừa mới được khởi tạo trên một đoạn nội dung sau: “hoc php co ban”. Đồng thời xuất nội dung đó trong File ra trình duyệt
Bài 2:
Chuyển đổi toàn bộ nội dung trong File bai_tap_1.txt ở Bài 1 từ tiếng Việt không dấu sang tiếng Anh với yêu cầu sử dụng các hàm thao tác với File và hàm thay thế chuỗi str_replace().
II – BÀI TẬP VỀ NHÀ
Bài 3:
Xây dựng hệ thống lưu địa chỉ các website với các yêu cầu về thiết kế như trong File bài giải bai_tap_3.php. Thực thi File này để phục vụ tốt cho việc xây dựng ứng dụng được chính xác hơn
Bài 4:
Xây dựng ứng dựng bộ đếm số người truy cập website ở mức độ cơ bản với các yêu cầu về thiết kế như trong File bài giải bai_tap_4.php. Thực thi File này để phục vụ tốt cho việc xây dựng ứng dụng được chính xác hơn
Bài 5:
Xây dựng ứng dựng bộ đếm số người truy cập website ở mức
độ nâng cao với các yêu cầu về thiết
kế như trong File bài giải bai_tap_5.php. Thực thi File này để phục vụ tốt cho
việc xây dựng ứng dụng được chính xác hơn
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Translate</title>
</head>
<body>
<?php
if($_POST["submit_name"]){
// Mở và đọc nội dung File
$path = "bai_tap_1.txt";
$fopen = fopen($path, "r");
$fread = fread($fopen, filesize($path));
$fclose = fclose($fopen);
// Dịch nội dung File
$arr_vi = array("hoc", "lap trinh", "co ban");
$arr_en = array("learning", "programming", "basic");
$fread = str_replace($arr_vi, $arr_en, $fread);
// Mở và ghi nội dung mới cho File
$fopen = fopen($path, "w");
$fwrite = fwrite($fopen, $fread);
$fclose = fclose($fopen);
}
else{
// Đọc nội dung File để hiển thị vào phần tử textarea
$path = "bai_tap_1.txt";
$fopen = fopen($path, "r");
$fread = fread($fopen, filesize($path));
$fclose = fclose($fopen);
}
?>
<form method="post">
<table align="center" width="300" border="1" cellpadding="1" cellspacing="1">
<tr><td align="center">HỆ THỐNG DỊCH BÀI BÀI TỰ ĐỘNG</td></tr>
<tr><td>
<textarea name="art"><?php echo $fread;?></textarea>
</td></tr>
<tr><td>
<input type="submit" name="submit_name" value="Translate and Save" />
</td></tr>
</table>
</form>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Bài 4</title>
<style type="text/css">
b{
color:#FF0000;
}
p{
font-family:arial;
font-size:12px;
color:#FF0000;
font-style:italic;
}
</style>
</head>
<body>
<?php
$fp = "counter.txt";
$fo = fopen($fp, r);
$fr = fgets($fo);
$fc = fclose($fo);
echo "Trang web của bạn đã có <b>".$fr."</b> người truy cập";
echo "<p>Mỗi lần bạn bấm phím F5 (Refresh lại trang) cũng được tính là một lần truy cập mới</p>";
$fr++;
$fp = "counter.txt";
$fo = fopen($fp, w);
$fw = fwrite($fo, $fr);
$fc = fclose($fo);
?>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Bài 5</title>
<style type="text/css">
h3{
font-family:arial;
font-size:12px;
font-weight:bold;
color:#333333;
text-transform:uppercase;
}
</style>
</head>
<body>
<?php
$fp = "counter.txt";
$fo = fopen($fp, r);
$fr = fgets($fo);
$fc = fclose($fo);
echo "<h3>Tổng số người đã truy cập trang web của bạn:</h3>";
$len = strlen($fr);
for($i=0; $i<$len; $i++){
$num = substr($fr, $i, 1);
echo "<img src=\"images/$num.gif\">";
}
$fr++;
$fp = "counter.txt";
$fo = fopen($fp, w);
$fw = fwrite($fo, $fr);
$fc = fclose($fo);
?>
</body>
</html>








No comments:
Post a Comment