Làm cách nào để phân tích cú pháp tệp CSV bằng PHP?

❮ Tham khảo hệ thống tập tin PHP

Ví dụ

Đọc và xuất một dòng từ tệp CSV đang mở

$file = fopen("danh bạ. csv","r");
print_r(fgetcsv($file));
fclose($file);
?>

Chạy ví dụ »


Định nghĩa và cách sử dụng

Hàm fgetcsv() phân tích cú pháp một dòng từ tệp đang mở, kiểm tra các trường CSV

Mẹo. Xem thêm hàm fputcsv()

cú pháp

fgetcsv(tệp, độ dài, dấu tách, bao vây)

Giá trị tham số

Tham sốTệp mô tảBắt buộc. Chỉ định tệp đang mở để trả về và phân tích cú pháp một dòng fromlengthOptional. Chỉ định độ dài tối đa của một dòng. Phải lớn hơn dòng dài nhất (bằng ký tự) trong tệp CSV. Bỏ qua tham số này (hoặc đặt thành 0) độ dài dòng không bị giới hạn, chậm hơn một chút. Ghi chú. Tham số này là bắt buộc trong các phiên bản trước PHP 5separatorOptional. Chỉ định dấu tách trường. Mặc định là dấu phẩy ( , ) bao vâyTùy chọn. Chỉ định ký tự bao vây trường. Mặc định là "escapeOptional. Chỉ định ký tự thoát. Mặc định là "\\"

chi tiết kỹ thuật

Giá trị trả về. Một mảng có các trường CSV khi thành công, NULL nếu tệp không hợp lệ được cung cấp, FALSE đối với các lỗi khác và trên Phiên bản EOFPHP. 4. 0+An toàn nhị phân. Có, trong PHP 4. 3. Nhật ký thay đổi 5PHP. PHP5. 3 - Đã thêm tham số thoát

Thêm ví dụ

Ví dụ

Đọc và xuất toàn bộ nội dung của tệp CSV

$file = fopen("danh bạ. csv","r");

trong khi(. feof($file))
{
print_r(fgetcsv($file));
}

fclose($file);
?>

Chạy ví dụ »


❮ Tham khảo hệ thống tập tin PHP

Trong bài đăng này, tôi sẽ chỉ cho bạn cách sử dụng các hàm có sẵn của PHP để đọc và in nội dung của tệp CSV và chuyển đổi nó thành một mảng. Chúng tôi sẽ sử dụng

3
4 và
3
5 để đọc nội dung của tệp CSV, sau đó chúng tôi sẽ chuyển đổi nó thành một mảng bằng cách sử dụng các hàm
3
6 và
3
7

Giới thiệu

Lưu trữ tệp dữ liệu ở định dạng giá trị được phân tách bằng dấu phẩy (CSV) không phải là điều mới. Trên thực tế, đây là một trong những cách lưu trữ dữ liệu phổ biến nhất do tính đơn giản của nó—tệp CSV dễ đọc và ghi, đồng thời có thể mở trong trình soạn thảo văn bản cơ bản. Loại tệp này lưu trữ dữ liệu dạng bảng ở dạng văn bản thuần túy

Một ví dụ về một tập tin như vậy sẽ trông như thế này

1
Elias,40,nurse
2
Rehema,15,programmer
3
Beatrice,23,doctor

Dữ liệu này thể hiện thông tin về ba người, với các cột tương ứng với tên, tuổi và công việc của họ. Mặc dù đây là một định dạng dữ liệu đơn giản nhưng có thể khó đọc và sử dụng

Do đó, trong bài viết này, tôi sẽ hướng dẫn bạn cách mở tệp CSV bằng cách sử dụng các hàm gốc của PHP như

3
4, cách đọc nội dung của tệp này bằng cách sử dụng phương thức
3
5 và cuối cùng là cách chuyển đổi tệp CSV này thành một mảng bằng cách sử dụng

Tất nhiên, có một số gói của bên thứ ba mà chúng tôi có thể sử dụng để đạt được điều này, nhưng PHP có các hàm gốc tích hợp hoạt động rất tốt.  

điều kiện tiên quyết

Để tiếp tục với bài viết này, bạn sẽ cần những thứ sau

  • PHP phiên bản 5. 6 trở lên được cài đặt trên máy của bạn
  • môi trường phát triển cho PHP—XAMPP hoặc WampServer đều hoạt động tốt
  • một số hiểu biết cơ bản về các khái niệm PHP

Hãy bắt đầu nào

Hiển thị Tệp CSV dưới dạng Bảng

Trong phần này của bài viết, chúng ta sẽ đọc một tệp CSV đơn giản chứa một vài từ được phân tách bằng dấu phẩy. Để bắt đầu, chúng tôi sẽ sử dụng tệp đơn giản mà chúng tôi đã sử dụng ở trên và sau đó chúng tôi có thể tiếp tục sử dụng tệp lớn hơn ngẫu nhiên. Tất nhiên, bạn có thể tạo tệp của riêng mình bằng Microsoft Excel hoặc trình soạn thảo văn bản và lưu tệp đó với phần mở rộng CSV

Để đọc tệp, trước tiên chúng ta phải tìm tệp đó trong thư mục hoặc vị trí tệp được lưu trong đó. Để truy cập dễ dàng hơn, bạn có thể muốn lưu nó vào cùng thư mục nơi bạn có tệp chương trình của mình. Sau đó, chúng ta có thể sử dụng hàm

3
4 để đọc tệp

Sau đó, hàm

3
5 kiểm tra các trường CSV từ một dòng được phân tích cú pháp của tệp đang mở. Chức năng này yêu cầu ba tham số. xử lý tệp được trả về từ
3
4, độ dài tối đa của dòng được đọc và ký tự phân cách đặc biệt—mà chúng tôi gọi là "dấu phân cách". Đây có thể là dấu phẩy, dấu chấm phẩy hoặc bất kỳ dấu phân cách nào khác

Bây giờ chúng ta hãy thực hành

Tạo một tệp có tên csvtable. php ở đâu đó, nó có thể được cung cấp bằng WAMP hoặc XAMPP và sao chép đoạn mã sau

1

2
3
Elias,40,nurse
0
Elias,40,nurse
1
Elias,40,nurse
2
Elias,40,nurse
3
Elias,40,nurse
4
Elias,40,nurse
5
Elias,40,nurse
6
Elias,40,nurse
7
Elias,40,nurse
8
Elias,40,nurse
9
2
0
2
1
2
2
2
3
2
4
2
5
2
6
2
7
2
8
2
9
Rehema,15,programmer
0
Rehema,15,programmer
1
Rehema,15,programmer
2
Rehema,15,programmer
3
Rehema,15,programmer
4
Rehema,15,programmer
5
Rehema,15,programmer
6
Rehema,15,programmer
7
Rehema,15,programmer
8
Rehema,15,programmer
9
3
0
3
1

Trong tệp này, trước tiên chúng tôi mở dữ liệu. csv, tệp này sẽ chứa một số dữ liệu được phân tách bằng dấu phẩy.

Elias,40,nurse
04 sẽ tìm tệp này trong cùng thư mục với csvtable. php. Tham số
Elias,40,nurse
05 yêu cầu
Elias,40,nurse
04 mở tệp dưới dạng chỉ đọc.  

Nếu tệp được mở thành công,

Elias,40,nurse
04 sẽ trả về một phần xử lý tệp có thể được sử dụng cho các thao tác đọc tệp khác. Nếu không, nó sẽ trả về
Elias,40,nurse
08. Do đó, chúng tôi kiểm tra xem xử lý tệp không phải là
Elias,40,nurse
08 trước khi tiếp tục đọc tệp

Tệp

3
5 sau đó tìm nạp các trường CSV từ tệp đã mở, mỗi lần một dòng. Chúng tôi yêu cầu
Elias,40,nurse
11 đọc tối đa 100 ký tự trên mỗi dòng và sử dụng dấu phân cách bằng dấu phẩy làm dấu phân cách. Các từ được tìm thấy trong tệp sau đó được lặp lại và in thành bảng HTML

Hàm cuối cùng là hàm

Elias,40,nurse
12 đóng tệp đã mở. Điều này giải phóng bộ nhớ được sử dụng bởi tệp đang mở và cho phép các quy trình khác có quyền truy cập vào tệp

mở csvtable. php thông qua máy chủ WAMP hoặc XAMPP localhost hoặc chạy

Elias,40,nurse
13 từ dòng lệnh để xem đầu ra sau

Làm cách nào để phân tích cú pháp tệp CSV bằng PHP?
Làm cách nào để phân tích cú pháp tệp CSV bằng PHP?
Làm cách nào để phân tích cú pháp tệp CSV bằng PHP?

Phần đầu tiên của những gì chúng ta cần đạt được đã được thực hiện

Bây giờ, chúng ta sẽ chuyển đổi các trường CSV thô thành một mảng

Chuyển đổi tệp CSV thô thành một mảng

Bây giờ, có nhiều cách để tạo mảng. Chúng ta có thể sử dụng hàm

3
5 để tự động chuyển đổi nội dung của tệp CSV thành một mảng hoặc chúng ta có thể sử dụng
Elias,40,nurse
15

Sử dụng 35 để chuyển đổi tệp CSV thành một mảng

Điều này tương tự như ví dụ ở trên, nơi chúng tôi đã sử dụng

3
5 để hiển thị tệp CSV dưới dạng bảng HTML. Hãy xem điều này trong hành động. Tạo một tệp PHP với các nội dung sau

1

2
3
5
3
Elias,40,nurse
1
3
8
Elias,40,nurse
2
Elias,40,nurse
4
Beatrice,23,doctor
1
Elias,40,nurse
6
Beatrice,23,doctor
3
Elias,40,nurse
8
2
0
Rehema,15,programmer
1
2
2
2
4
Rehema,15,programmer
6
2
6
1
1
2
8
Rehema,15,programmer
8
Rehema,15,programmer
0
Rehema,15,programmer
2
1
6
Rehema,15,programmer
4
1
8
Rehema,15,programmer
5

0
Rehema,15,programmer
7
Rehema,15,programmer
9

3
3
0

5

6

7

8

9
2
0
3
1

Trong đoạn mã trên, chúng tôi đã tạo một hàm để đọc tệp CSV và chuyển đổi nó thành một mảng. Chúng tôi chuyển vào một tham số có tên và đường dẫn tệp tài liệu CSV

Sau đó, chúng ta sử dụng hàm

Elias,40,nurse
18 để kiểm tra xem đã đến cuối tệp chưa. Cho đến khi có, chúng ta cần phân tích cú pháp các trường CSV bằng cách sử dụng hàm
3
5, giống như chúng ta đã làm trong ví dụ trên

Các trường CSV được phân tích cú pháp từ tệp CSV được chuyển đổi thành một mảng bằng cách sử dụng hàm

3
5 và được thêm từng trường một vào biến
Elias,40,nurse
21

Cuối cùng, đừng quên sử dụng hàm

Elias,40,nurse
12 để đóng tệp đã mở trước khi thoát khỏi hàm

Sau đó, chúng tôi gọi hàm

Elias,40,nurse
23, chuyển tài liệu CSV dưới dạng tham số và tiếp theo, nội dung của tệp CSV được hiển thị như bên dưới

Làm cách nào để phân tích cú pháp tệp CSV bằng PHP?
Làm cách nào để phân tích cú pháp tệp CSV bằng PHP?
Làm cách nào để phân tích cú pháp tệp CSV bằng PHP?

Sử dụng 36 để đọc tệp CSV

Ngoài ra, bạn có thể sử dụng hàm

3
6 để đọc tệp CSV thành một mảng. Để làm điều này, bạn sẽ sử dụng
Elias,40,nurse
26 làm chức năng gọi lại. Đây là một hàm PHP tích hợp được sử dụng để phân tích chuỗi CSV thành một mảng

Hàm gọi lại là một số mã thực thi được chuyển đến một đoạn mã khác dưới dạng đối số. Đối số này dự kiến ​​sẽ được gọi lại sau bởi mã mà nó được chuyển đến

Đây là cách chúng tôi có thể sử dụng

Elias,40,nurse
15 và
Elias,40,nurse
26 để ánh xạ dữ liệu CSV của mình thành một mảng

1

2
2
5_______0_______

5_______5_______1

7
Elias,40,nurse
2

9
Elias,40,nurse
4
3
1

Đoạn mã trên sử dụng phương pháp

Elias,40,nurse
29 để đọc tệp CSV thành một mảng các dòng. Sau đó, với bản đồ mảng, nó gọi
3
7 trên mỗi dòng và lưu trữ dữ liệu cho toàn bộ tệp trong
Elias,40,nurse
31. Hàm
3
7 phân tích nội dung trường CSV của mỗi dòng thành một mảng

Đầu ra của đoạn mã trên sẽ giống như trên

Lưu ý rằng mã được yêu cầu ít hơn bao nhiêu khi sử dụng trực tiếp hàm

Elias,40,nurse
29 và hàm
3
6?

Phần kết luận

Trong bài viết này, bạn đã học cách xử lý tệp CSV trong PHP bằng cách đọc và hiển thị nội dung của nó bằng cách sử dụng các hàm gốc của PHP như

3
4 và
3
5 và chuyển đổi các trường CSV thành một mảng. Tôi đã chỉ cho bạn hai cách để làm điều này.  

Làm cách nào để tải lên và phân tích tệp CSV trong PHP?

Để tải tệp CSV lên, hãy sử dụng thẻ html đầu vào làm giá trị loại “tệp”. .

Làm cách nào để trích xuất CSV thành mảng trong PHP?

Ánh xạ str_getcsv() để đọc CSV và chuyển đổi nó thành một mảng PHP . Sau đó, array_map đặt hàm str_getcsv() làm lệnh gọi lại để lặp lại mảng các hàng của tệp CSV. str_getcsv() nhập dữ liệu hàng CSV vào một mảng.

Làm cách nào để đọc từng dòng tệp CSV trong PHP?

Chúng tôi sẽ sử dụng fopen() và fgetcsv() để đọc nội dung của tệp CSV, sau đó chúng tôi sẽ chuyển đổi nó thành một mảng bằng cách sử dụng array_map() và . .

Làm cách nào để tải tệp CSV bằng PHP?

Làm cách nào để nhập và xuất CSV bằng cách sử dụng php và MySQL? .
Phê duyệt hồ sơ đã gửi, cho dù là tệp CSV quan trọng
Kiểm tra trạng thái truyền tệp CSV bằng hàm is_uploaded_file() của PHP
Truy cập tệp CSV bằng hàm PHP fopen()
Phân tích dữ liệu từ bản ghi CSV sử dụng hàm PHP fgetcsv()