Hướng dẫn php convert csv string to array - php chuyển đổi chuỗi csv thành mảng

Tôi đang cố gắng phân tích chuỗi CSV vào một mảng trong PHP. Chuỗi CSV có các thuộc tính sau:

Delimiter: ,
Enclosure: "
New line: \r\n

Nội dung ví dụ:

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"

Khi tôi cố gắng phân tích nó như thế này:

$url = "http://www.url-to-feed.com";
$csv = file_get_contents($url);
$data = str_getcsv($csv);
var_dump($data);

Phần tử cuối cùng và đầu tiên được nối trong một chuỗi:

[0]=> string(5) "12345"
...
[7]=> string(4) "0.04"
[8]=> string(19) "27-05-2013
"12346""

Làm thế nào tôi có thể sửa lỗi này? Bất kỳ trợ giúp sẽ được đánh giá cao.

Hướng dẫn php convert csv string to array - php chuyển đổi chuỗi csv thành mảng

người sử dụng

21K9 Huy hiệu vàng110 Huy hiệu bạc99 Huy hiệu đồng9 gold badges110 silver badges99 bronze badges

Đã hỏi ngày 20 tháng 7 năm 2013 lúc 10:18Jul 20, 2013 at 10:18

2

Làm cái này:

$csvData = file_get_contents($fileName);
$lines = explode(PHP_EOL, $csvData);
$array = array();
foreach ($lines as $line) {
    $array[] = str_getcsv($line);
}
print_r($array);

Nó sẽ cung cấp cho bạn một đầu ra như thế này:

Array
(
    [0] => Array
        (
            [0] => 12345
            [1] => Computers
            [2] => Acer
            [3] => 4
            [4] => Varta
            [5] => 5.93
            [6] => 1
            [7] => 0.04
            [8] => 27-05-2013
        )

    [1] => Array
        (
            [0] => 12346
            [1] => Computers
            [2] => Acer
            [3] => 5
            [4] => Decra
            [5] => 5.94
            [6] => 1
            [7] => 0.04
            [8] => 27-05-2013
        )

)

Tôi hy vọng điều này có thể là một số trợ giúp.

Đã trả lời ngày 20 tháng 7 năm 2013 lúc 10:44Jul 20, 2013 at 10:44

Saran Banerjeesaran Banerjeesaran banerjee

2.8251 Huy hiệu vàng12 Huy hiệu bạc12 Huy hiệu đồng1 gold badge12 silver badges12 bronze badges

11

Bạn nên sử dụng FGETCSV. Vì bạn không thể nhập tệp dưới dạng luồng vì CSV là một biến, nên bạn nên giả mạo chuỗi làm tệp bằng cách sử dụng

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
7 hoặc
"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
8 trước:
Since you cannot import a file as a stream because the csv is a variable, then you should spoof the string as a file by using
"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
7 or
"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
8 first:

$fp = fopen("php://temp", 'r+');
fputs($fp, $csvText);
rewind($fp);

Sau đó, bạn sẽ không gặp vấn đề gì khi sử dụng FGETCSV:

$csv = [];
while ( ($data = fgetcsv($fp) ) !== FALSE ) {
    $csv[] = $data;
}
fclose($fp)

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
9 sẽ là một mảng của một dòng CSV duy nhất (có thể bao gồm ngắt dòng hoặc dấu phẩy, v.v.), như nó phải có.

Hãy cẩn thận: Giới hạn bộ nhớ của PHP: // TEMP có thể được kiểm soát bằng cách nối thêm/MaxMemory: NN, trong đó NN là lượng dữ liệu tối đa để giữ trong bộ nhớ trước khi sử dụng tệp tạm thời, tính bằng byte. (Mặc định là 2 MB)

Đã trả lời ngày 9 tháng 6 năm 2017 lúc 3:43Jun 9, 2017 at 3:43

Hướng dẫn php convert csv string to array - php chuyển đổi chuỗi csv thành mảng

iateadonutiateadonutiateadonut

1.67416 huy hiệu bạc27 Huy hiệu đồng16 silver badges27 bronze badges

7

Oneliner tiện dụng:

$csv = array_map('str_getcsv', file('data.csv'));

Đã trả lời ngày 10 tháng 12 năm 2014 lúc 20:44Dec 10, 2014 at 20:44

GAUIGAUIGaui

8.48315 Huy hiệu vàng63 Huy hiệu bạc88 Huy hiệu Đồng15 gold badges63 silver badges88 bronze badges

8

Tôi đã sử dụng chức năng sau để phân tích chuỗi CSV thành mảng kết hợp

public function csvToArray($file) {
    $rows = array();
    $headers = array();
    if (file_exists($file) && is_readable($file)) {
        $handle = fopen($file, 'r');
        while (!feof($handle)) {
            $row = fgetcsv($handle, 10240, ',', '"');
            if (empty($headers))
                $headers = $row;
            else if (is_array($row)) {
                array_splice($row, count($headers));
                $rows[] = array_combine($headers, $row);
            }
        }
        fclose($handle);
    } else {
        throw new Exception($file . ' doesn`t exist or is not readable.');
    }
    return $rows;
}

Nếu tên tệp CSV của bạn là mycsv.csv thì bạn gọi chức năng này là:

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
0

Bạn cũng có thể nhận được tập lệnh này trong http://www.scriptville.in/parse-csv-data-to-array/

Đã trả lời ngày 22 tháng 9 năm 2014 lúc 15:27Sep 22, 2014 at 15:27

Hướng dẫn php convert csv string to array - php chuyển đổi chuỗi csv thành mảng

1

Sửa đổi các câu trả lời trước đó bằng cách sử dụng

$url = "http://www.url-to-feed.com";
$csv = file_get_contents($url);
$data = str_getcsv($csv);
var_dump($data);
0. Thổi dữ liệu CSV với nhiều dòng.
Blow up the CSV data with multiple lines.

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
1

Đã trả lời ngày 11 tháng 5 năm 2018 lúc 23:08May 11, 2018 at 23:08

Hướng dẫn php convert csv string to array - php chuyển đổi chuỗi csv thành mảng

Joseph D.Joseph D.Joseph D.

11.3k3 Huy hiệu vàng29 Huy hiệu bạc62 Huy hiệu Đồng3 gold badges29 silver badges62 bronze badges

Phiên bản hơi ngắn hơn, không có biến thứ hai không cần thiết:

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
2

Đã trả lời ngày 1 tháng 12 năm 2014 lúc 19:53Dec 1, 2014 at 19:53

Người dùnguser

21K9 Huy hiệu vàng110 Huy hiệu bạc99 Huy hiệu đồng9 gold badges110 silver badges99 bronze badges

1

Đã hỏi ngày 20 tháng 7 năm 2013 lúc 10:18

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
3

Làm cái này:Sep 24, 2017 at 10:41

Nó sẽ cung cấp cho bạn một đầu ra như thế này:

Tôi hy vọng điều này có thể là một số trợ giúp.

Use:

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
4

Đã trả lời ngày 20 tháng 7 năm 2013 lúc 10:44Oct 4, 2018 at 10:20

Saran Banerjeesaran BanerjeeStacey Richards

2.8251 Huy hiệu vàng12 Huy hiệu bạc12 Huy hiệu đồng7 gold badges37 silver badges40 bronze badges

Bạn nên sử dụng FGETCSV. Vì bạn không thể nhập tệp dưới dạng luồng vì CSV là một biến, nên bạn nên giả mạo chuỗi làm tệp bằng cách sử dụng

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
7 hoặc
"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
8 trước:

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
5

Sau đó, bạn sẽ không gặp vấn đề gì khi sử dụng FGETCSV:Apr 7, 2020 at 10:15

Hướng dẫn php convert csv string to array - php chuyển đổi chuỗi csv thành mảng

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
9 sẽ là một mảng của một dòng CSV duy nhất (có thể bao gồm ngắt dòng hoặc dấu phẩy, v.v.), như nó phải có.

"12345","Computers","Acer","4","Varta","5.93","1","0.04","27-05-2013"
"12346","Computers","Acer","5","Decra","5.94","1","0.04","27-05-2013"
6

Hãy cẩn thận: Giới hạn bộ nhớ của PHP: // TEMP có thể được kiểm soát bằng cách nối thêm/MaxMemory: NN, trong đó NN là lượng dữ liệu tối đa để giữ trong bộ nhớ trước khi sử dụng tệp tạm thời, tính bằng byte. (Mặc định là 2 MB)Apr 9, 2020 at 14:54

Hướng dẫn php convert csv string to array - php chuyển đổi chuỗi csv thành mảng

1

Làm thế nào để lấy dữ liệu CSV trong mảng trong PHP?

Sử dụng Array_Map () để đọc tệp CSV thay thế, bạn có thể sử dụng hàm mảng_map () để đọc tệp CSV vào một mảng. Để làm điều này, bạn sẽ sử dụng str_getcsv 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 vào một mảng.use str_getcsv as a callback function. This is a built-in PHP function that is used to parse a CSV string into an array.

Làm thế nào để chuyển đổi chuỗi phân tách bằng dấu phẩy thành mảng PHP?

Cho một chuỗi dài cách nhau với dấu phân cách dấu phẩy. Nhiệm vụ là phân chia chuỗi đã cho với dấu phân cách dấu phẩy và lưu trữ kết quả trong một mảng. Sử dụng hàm explode () hoặc preg_split () để phân chia chuỗi trong PHP với dấu phân cách đã cho.Use explode() or preg_split() function to split the string in php with given delimiter.

Làm cách nào để tạo một mảng trong CSV?

Để phân tích chuỗi CSV vào một mảng, bạn cần ghi một mã sẽ tách chuỗi giữa các tiêu đề CSV và hàng CSV. Sau đó, bạn cần đặt mỗi hàng làm một phần tử đối tượng, sử dụng các tiêu đề làm tên thuộc tính và hàngnhư các giá trị.write a code that will separate the string between CSV headers and CSV rows. Then, you need to put each row as one object element, using the headers as the property names and the row as the values.

Làm cách nào để đọc tệp CSV trong cột khôn ngoan trong PHP?

Bạn có thể mở tệp bằng fopen () như bình thường, lấy từng dòng bằng cách sử dụng fgets () và sau đó chỉ cần phát nổ nó trên mỗi dấu phẩy như thế này:open the file using fopen() as usual, get each line by using fgets() and then simply explode it on each comma like this: