Php đọc tệp txt

Trong bài học trước chúng ta đã tìm hiểu kiến ​​thức về biểu mẫu và cách xử lý biểu mẫu giá trị 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 tệp 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ế trang web bằng ngôn ngữ PHP. Dưới đây là một số thông tin sẽ được 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 tập tin

Việc mở các tập tin văn bản gốc hoặc tập tin CSV thực 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 yêu cầu phải có cơ sở dữ liệu với nhiều bảng, do đó ý tưởng lưu trữ dữ liệu trong các tệp văn bản đơ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 cơ sở dữ liệu

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

Khi mở tệp này ra và xem nội dung, ta thấy như thế này

AAS = Sống và mỉm cười
ADN = Bất cứ ngày nào bây giờ
AEAP = Càng sớm càng tốt
AFAIK =
AFK = Away from keyboard
AKA = Also known as

Thật ra đây là một danh sách dài các giá trị được tách ra 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ở bảng văn bản tệp này bằng mã PHP, bạn sẽ thấy các cách khác nhau để mở và làm việc với tệp văn bản này

Open a file in PHP by readfile[] function

To open a file, you can use many way. Cách đầu tiên là chúng ta sử dụng hàm readfile[], hàm này có tác dụng đọc nội dung của tệp

Các bạn hãy thử đoạn mã sau

Save the script on file *. php and set the same directory with file dictionary. txt. Hãy chạy mã 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 tranh phân cách và xuống dòng

Bạn cũng có thể thay thế 02 dòng mã trên bằng các cách sau

Cách 01

in readfile["từ điển. txt"];

Cách 02

          $file_to_read = "dictionary. txt";
        in readfile[$file_to_read];

Cách 03

          $file_to_read = "filedictionary. txt";// trường hợp tệp đặt không cùng thư mục
         print readfile[$file_to_read];

Hàm readfile[] có tác dụng mở tệp và đọc nội dung của tệp đó

Một hàm tương tự khác cũng có tác dụng đọc tệp nội dung là file_get_contents[]. Hàm này có sẵn ở phiên bản PHP 4. 3 trở lên

Xem ví dụ

          $file_to_read = "dictionary. txt";
        in file_get_contents[ $file_to_read ];

?>

Open a file in PHP by fopens[] function

Một phương pháp mở tệp hay hơn là sử dụng hàm fopen[]. Hàm này cho phép bạn có nhiều tùy chọn hơn như mở tệp với thuộc tính chỉ đọc, hoặc chỉ ghi, và một số thuộc tính khác

Ví dụ

        $file_contents = fopen[ "dictionary. txt", "r" ];
         print $file_contents;
        fclose[$file_contents];

?>

Khi chạy đoạn script này, ta sẽ nhận được kết quả

Id tài nguyên #2

Kết quả này không giống như những gì bạn mong đợi. Lý do là fopen[] thực sự không đọc được nội dung của tệp. Tất cả những gì nó làm là thiết lập con trỏ trong tệp mà bạn muốn mở ra và trả về giá trị xử lý tệp [tệp con trỏ], bạn quan tâm đến giá trị này để lưu lại vị trí của tệp

Nhưng sau khi bạn khai báo PHP ghi nhớ vị trí của tệp rồi, thì bạn đọc tệp nội dung bằng cách nào? . 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 trong từng dòng riêng biệt. Khi bạn sử dụng hàm fget[], bạn cần kiểm tra xem tập tin nào sẽ kết thúc bằng cách sử dụng hàm feof[]

Ví dụ

$file_handle = fopen["từ điển. txt", "r"];

trong khi [. feof[$file_handle]] {

          $line_of_text = fgets[$file_handle];
             print $line_of_text. "
";

}

fclose[$file_handle];

?>

Sau khi chạy tập lệnh này, bạn sẽ thấy nội dung trong từng dòng riêng biệt. Nhưng cách nó hoạt động như thế nào?

At the first command line

$file_handle = fopen[ "từ điển. txt", "r" ];

Ở đây chúng ta yêu cầu PHP mở một tệp và ghi nhớ vị trí của nó. Vị trí được lưu trữ dưới dạng xử lý tệp. Chúng ta gán giá 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

At the next line by the loop

trong khi [] {

}

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

            . feof[ $file_handle ]

Lưu ý, vòng lặp trong khi vòng lặp sẽ lặp lại cho đến khi bạn yêu cầu nó dừng lại. Nó sẽ lặp lại khi điều kiện đúng. Điều kiện giữa hai dấu ngoặc nhọn trông khá lạ. . kẻ phản bội

Hàm feof[] có nghĩa là file kết thúc file, có tác dụng báo khi file nào kết thúc. You set the file between the command command two

feof[ $file_handle ]

Chúng ta sử dụng thuật toán NOT [. ] để duy trì vòng lặp khi chưa truy cập tệp cuối cùng

trong khi [. feof[ $file_handle ] ] {

}

Giải thích. when not end file, loop loop will pointer to $file_handle. Khi tệp kết thúc, vòng lặp sẽ dừng lại

Party in the loop, first line is

$line_of_text = fgets[ $file_handle ];

Ta use fgets function to get a text line from file. We back using file handle

fgets[$file_handle ];

Vì vậy, chúng ta sẽ lấy một dòng từ tệp, gán dòng đó vào một biến, sau đó ta đưa nó vào

        in $line_of_text. "
";

The same lines of code is

fclose[ $file_handle ];

Dòng này có tác dụng đóng tệp lại, nó báo cho PHP biết rằng con trỏ tệp không cần thiết nữa. Lưu ý bạn phải luôn đóng tệp khi mở tệp bằng 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 văn bản

fgets[$file_handle, line_size];

Kích thước của dòng văn bản được đánh giá bằng byte đơn vị, mặc định là 1024 byte. This size only allow has or not from PHP 4 version. 2 trở đi, nếu phiên bản PHP thấp hơn thì bạn sẽ nhận được thông báo lỗi nếu bỏ qua thông số line_size

fgets[$file_handle, 1024];

Nếu bạn thực 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 kích thước dòng chỉ

Vận chuyển 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

Chủ Đề