@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", WISau.
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
PaypalCô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í