2012-12-20 33 views
5

thể trùng lặp:
how to extract data from csv file in phpTệp PHP và CSV - cách phát hiện kết thúc của dòng?

Tôi có một số dữ liệu trong XLS, tôi lưu lại ở dạng CSV, dấu phân cách là dấu phẩy ** *. Sau đó, tôi đang cố gắng để tải dữ liệu từ tệp CSV này:

$input = explode("\r\n", fread($file, filesize("my_data.csv"))); 
print_r($input); 

Sản lượng:

Array ([0] => data from the CSV file) 

Đây là vấn đề - trong mảng luôn luôn chỉ là một mục, khi được in ra tất cả dữ liệu từ tệp CSV. Làm thế nào là có thể? Tại sao không có trong mảng nhiều mục như là các hàng trong tệp CSV?

Ngoài ra, tôi đã cố gắng thay đổi "\r\n" cho "\ n", nhưng nó giống nhau.

Điều tôi đang cố gắng làm - tải từng dòng từ tệp CSV và mỗi dòng này để xử lý.

ví dụ về file:

a,b,c,d 
e,f,g,h 

OUTPUT:

a,b,c,d e,f,g,h

+2

Sử dụng hàm fgetcsv() tích hợp để đọc dữ liệu CSV –

+0

Bất kỳ lý do nào bạn không sử dụng http://php.net/manual/en/function.fgetcsv.php? Đừng tự mình phân tích cú pháp dữ liệu CSV - bạn sẽ ở trong một thế giới đau đớn với bất kỳ điều gì phức tạp hơn một danh sách số đơn giản. –

+0

Nhưng các bạn, làm thế nào để bạn giải quyết mục cuối cùng trên hàng? Bởi vì, mục cuối cùng này có bất kỳ dấu phẩy nào ở cuối, vì vậy mục cuối cùng được hợp nhất với mục đầu tiên trên dòng thứ hai. – user984621

Trả lời

4

tôi khuyên bạn nên sử dụng php của xây dựng trong tập tin csv đọc chức năng fgetcsv() và không tạo riêng của bạn: http://php.net/manual/en/function.fgetcsv.php

if (($handle = fopen($file, "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $row = implode (",",$data); //puts back together the row from the csv 
     echo $row. "\n"; //assuming you want a visual linebreak on console, add the \n 
    } 
    fclose($handle); 
} 
+0

Tôi không biết nếu đó là một lỗi hoặc, nhưng khi tôi thử điều này, vì vậy mục cuối cùng trong dòng không có dấu phẩy ở cuối - điều khiến tôi gặp rắc rối ... bởi vì tôi không nhận được kết quả mong đợi. – user984621

+0

Ray, hãy kiểm tra OP, đây là đầu ra mà tôi nhận được nếu tôi sẽ sử dụng đoạn mã này - chữ 'd' và' e' được hợp nhất thành một mục. Đó là toàn bộ vấn đề của tôi mà tôi không biết làm thế nào để giải quyết. – user984621

0

Làm thế nào tôi giải quyết vấn đề này:

Trong tập tin XLS, trước khi xuất khẩu các tập tin vào CSV, tôi đã thêm vào cuối tờ một cột nhiều hơn với các char '.

Các vấn đề liên quan