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

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 csv string to array php - chuỗi csv thành mảng php

người sử dụng

21.1k9 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 csv string to array php - chuỗi csv thành mảng php

iateadonutiateadonutiateadonut

1.68417 Huy hiệu bạc27 Huy hiệu đồng17 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 csv string to array php - chuỗi csv thành mảng php

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 csv string to array php - chuỗi csv thành mảng php

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

21.1k9 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 csv string to array php - chuỗi csv thành mảng php

"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 csv string to array php - chuỗi csv thành mảng php

1