Làm cách nào để chuyển đổi CSV thành mảng trong PHP?

@normadize - that is a nice start, but it fails on situations where a field is empty but quoted [returning a string with one double quote instead of an empty string] and cases like """""foo""""" that should result in ""foo"" but instead return "foo". I also get a row with 1 empty field at the end because of the final CRLF in the CSV. Plus, I don't really like the !!Q!! magic or urlencoding to get around things. Also, \R doesn't work in pcre on any of my php installations.

Here is my take on this, without anonymous functions [so it works on PHP < 5.3], and without your options [because I believe the only correct way to parse according to the RFC would be $skip_empty_lines = false and $trim_fields = false].

//parse a CSV file into a two-dimensional array
//this seems as simple as splitting a string by lines and commas, but this only works if tricks are performed
//to ensure that you do NOT split on lines and commas that are inside of double quotes.
function parse_csv[$str]
{
    //match all the non-quoted text and one series of quoted text [or the end of the string]
    //each group of matches will be parsed with the callback, with $matches[1] containing all the non-quoted text,
    //and $matches[3] containing everything inside the quotes
    $str = preg_replace_callback['/[[^"]*]["[[""|[^"]]*]"|$]/s', 'parse_csv_quotes', $str];

    //remove the very last newline to prevent a 0-field array for the last line
    $str = preg_replace['/\n$/', '', $str];

    //split on LF and parse each line with a callback
    return array_map['parse_csv_line', explode["\n", $str]];
}

________số 8

    //The unquoted text is where commas and newlines are allowed, and where the splits will happen
    //We're going to remove all CRs from the unquoted text, by normalizing all line endings to just LF
    //This ensures us that the only place CR is used, is as the escape sequences for quoted text
    return preg_replace['/\r\n?/', "\n", $matches[1]] . $str;
}

array [
  0 =>
  array [
    0 => 'LatS',
    1 => 'NS',
    2 => 'LonD',
    3 => 'LonM',
    4 => 'LonS',
    5 => 'EW',
    6 => 'City',
    7 => 'State',
  ],
  1 =>
  array [
    0 => '59',
    1 => 'N',
    2 => '80',
    3 => '39',
    4 => '0',
    5 => 'W',
    6 => 'Youngstown',
    7 => 'OH',
  ],
  2 =>
  array [
    0 => '48',
    1 => 'N',
    2 => '97',
    3 => '23',
    4 => '23',
    5 => 'W',
    6 => 'Yankton',
    7 => 'SD',
  ],
  3 =>
  array [
    0 => '48',
    1 => 'N',
    2 => '89',
    3 => '46',
    4 => '11',
    5 => 'W',
    6 => 'Wisconsin Dells',
    7 => 'WI',
  ],
]
0

array [
  0 =>
  array [
    0 => 'LatS',
    1 => 'NS',
    2 => 'LonD',
    3 => 'LonM',
    4 => 'LonS',
    5 => 'EW',
    6 => 'City',
    7 => 'State',
  ],
  1 =>
  array [
    0 => '59',
    1 => 'N',
    2 => '80',
    3 => '39',
    4 => '0',
    5 => 'W',
    6 => 'Youngstown',
    7 => 'OH',
  ],
  2 =>
  array [
    0 => '48',
    1 => 'N',
    2 => '97',
    3 => '23',
    4 => '23',
    5 => 'W',
    6 => 'Yankton',
    7 => 'SD',
  ],
  3 =>
  array [
    0 => '48',
    1 => 'N',
    2 => '89',
    3 => '46',
    4 => '11',
    5 => 'W',
    6 => 'Wisconsin Dells',
    7 => 'WI',
  ],
]
1

Bạn có thấy công cụ này hữu ích không? . Điều này sẽ giúp chúng tôi cải thiện các công cụ web miễn phí của mình

Gần

Biểu mẫu này cho phép bạn chuyển đổi CSV sang PHP Array, dán hoặc tải lên tệp CSV của bạn bên dưới

duyệt toàn màn hìnhthoát toàn màn hình mẫubản saoxóa


Dấu tách CSV

Xóa khoảng trắng ở bên trái và bên phải của mỗi giá trị

Khóa liên kết nếu CSV của bạn có tên cột

Cú pháp mảng ngắn [dấu ngoặc vuông] beta


ConvertKết quả của bạn có thể được nhìn thấy dưới đây

Kết quả chuyển đổi CSV sang mảng PHP

tải xuống toàn màn hìnhthoát toàn màn hìnhsao chépxóa


Di chuyển đến SaveDi chuyển đến "Dán mã" để Lưu nó

Giới thiệu về chuyển đổi CSV sang PHP Array

Giới thiệu về chuyển đổi CSV sang PHP Array

Mảng Chuyển đổi CSV sang PHP được tạo để chuyển đổi trực tuyến CSV thành loại PHP thích hợp dưới dạng Mảng. Điều này có thể hữu ích để kiểm tra hoặc gỡ lỗi CSV của bạn, cũng như để định dạng nhanh và thêm một mảng PHP vào cấu hình của bạn hoặc bất kỳ nơi nào khác

Làm thế nào nó hoạt động?

Chỉ cần dán CSV của bạn vào vùng văn bản ở trên và nhấp vào nút "Chuyển đổi" và bạn sẽ nhận được mảng PHP trong vùng văn bản tiếp theo

Ví dụ về chuyển đổi CSV sang PHP Array

Trước.
"LatS", "NS", "LonD", "LonM", "LonS", "EW", "City", "State"
   59, "N",     80,   39,    0, "W", "Youngstown", OH
   48, "N",     97,   23,   23, "W", "Yankton", SD
   48, "N",     89,   46,   11, "W", "Wisconsin Dells", WI
Sau.
array [
  0 =>
  array [
    0 => 'LatS',
    1 => 'NS',
    2 => 'LonD',
    3 => 'LonM',
    4 => 'LonS',
    5 => 'EW',
    6 => 'City',
    7 => 'State',
  ],
  1 =>
  array [
    0 => '59',
    1 => 'N',
    2 => '80',
    3 => '39',
    4 => '0',
    5 => 'W',
    6 => 'Youngstown',
    7 => 'OH',
  ],
  2 =>
  array [
    0 => '48',
    1 => 'N',
    2 => '97',
    3 => '23',
    4 => '23',
    5 => 'W',
    6 => 'Yankton',
    7 => 'SD',
  ],
  3 =>
  array [
    0 => '48',
    1 => 'N',
    2 => '89',
    3 => '46',
    4 => '11',
    5 => 'W',
    6 => 'Wisconsin Dells',
    7 => 'WI',
  ],
]
Phím liên kết.
array [
  0 =>
  array [
    'LatS' => '59',
    'NS' => 'N',
    'LonD' => '80',
    'LonM' => '39',
    'LonS' => '0',
    'EW' => 'W',
    'City' => 'Youngstown',
    'State' => 'OH',
  ],
  1 =>
  array [
    'LatS' => '48',
    'NS' => 'N',
    'LonD' => '97',
    'LonM' => '23',
    'LonS' => '23',
    'EW' => 'W',
    'City' => 'Yankton',
    'State' => 'SD',
  ],
  2 =>
  array [
    'LatS' => '48',
    'NS' => 'N',
    'LonD' => '89',
    'LonM' => '46',
    'LonS' => '11',
    'EW' => 'W',
    'City' => 'Wisconsin Dells',
    'State' => 'WI',
  ],
]
Sau khi chuyển đổi, bạn có thể áp dụng mảng PHP cho dự án của mình hoặc sử dụng nó cho một số mục đích khác

Quyên tặng

Bạn có thích công cụ này? . Điều này sẽ giúp chúng tôi cải thiện các công cụ web miễn phí của mình

Paypal

Công cụ liên quan

Thoát CSV/UnescapeChuyển đổi CSV sang JSONChuyển đổi CSV sang XMLChuyển đổi CSV sang TSVChuyển đổi bảng CSV sang HTMLChuyển đổi CSV sang PDFChuyển đổi CSV sang YAMLETrích xuất cột CSVXóa cột CSVThay đổi dấu tách cột CSVHoán đổi cột CSVChuyển đổi CSV sang SQLChuyển đổi CSV sang ExcelChuyển đổi CSV sang PList

Về chúng tôi

WTOOLS - bộ Công cụ web dành cho nhà phát triển, quản trị viên web, chuyên gia SEO và những người khác có hoạt động kinh doanh trực tuyến. Tất cả các công cụ là hoàn toàn miễn phí

Làm cách nào để đọc tệp CSV và chuyển đổi thành mảng 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 để chuyển đổi CSV thành mảng trong laravel?

Hãy thử với storage_path['data. csv']. .
/lưu trữ/ứng dụng/dữ liệu. csv. = /lưu trữ/dữ liệu. csv. – Marc B. .
Nếu bạn cần sử dụng lớp Lưu trữ cho việc này, đặc biệt nếu bạn đang sử dụng s3 hoặc minio, hãy thử \Storage. disk['local_temp']->getDriver[]->getAdapter[]->applyPathPrefix[$this->fileName];

Làm cách nào để tạo tệp CSV trong PHP từ mảng?

Để chuyển đổi một mảng thành tệp CSV, chúng ta có thể sử dụng hàm fputcsv[] . Hàm fputcsv[] được sử dụng để định dạng một dòng dưới dạng tệp CSV [các giá trị được phân tách bằng dấu phẩy] và ghi nó vào một tệp đang mở.

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

Mở tệp PHP và viết đoạn mã sau vào đó, mã này sẽ được giải thích trong các bước sau. .
Mở tập dữ liệu của CSV bằng chức năng fopen. $open = fopen["tên tệp. .
Đọc một dòng bằng hàm fgetcsv[]. .
Sử dụng một vòng lặp để lặp lại trong mỗi hàng dữ liệu. .
Đóng tệp đó bằng phương thức PHP fclose[]

Chủ Đề