Download the PHP package luchaninov/csv-file-loader without Composer
On this page you can find all versions of the php package luchaninov/csv-file-loader. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download luchaninov/csv-file-loader
More information about luchaninov/csv-file-loader
Files in luchaninov/csv-file-loader
Package csv-file-loader
Short Description Load CSV & TSV files and strings. Using generators to minimize memory usage
License MIT
Informations about the package csv-file-loader
CSV File Loader
Load CSV & TSV files and strings using PHP generators. It uses memory like fopen
but requires less code.
How to Install
Install the luchaninov/csv-file-loader
package using composer:
Basic Usage
If you have CSV-file
you'll get 2 items
It uses fgetcsv function so it understands enclosed values like
and even
If you have simple string, no need to save it to the file. Use
Advanced Usage
If file is not large you can load all items at once without generators using getItemsArray()
.
If you have custom delimiters use setDelimiter
like $loader->setDelimiter(';')
. Same with encloser - setEncloser
.
Default delimiter is ,
for CsvFileLoader
and \t
for TsvFileLoader
; default encloser is "
.
If you are not sure - use delimiter auto
, it detects delimiter automatically by the first 10,000 characters.
If you have TSV instead of CSV you can set use setDelimiter("\t")
or use TsvFileLoader
.
If you are not sure - use AutoFileLoader
, it detects delimiter automatically.
By default it assumes that the first row of the file contains headers - it doesn't return this row as item but uses as keys for next rows. If you don't have headers in the first row - you can:
- set your own keys -
setHeaders(['key1', 'key2', ...])
- use numerical keys
[0, 1, 2, ...]
-setHeaders(false)
If there are more cols in some rows than there are cols in headers then they are truncated.
If you prefer to add extra values with numerical keys use setAddUnknownColumns(true)
.
To count items use countItems()
. In case of CSV it's not always the same with rows count - wc -l
, because one item can have several rows.
You can use same loader to load several files - $loader->setFilename('other_file.csv')
. If you iterate during some file when calling
setFilename
then there will be no more items from the first file, foreach will just finish.
Code is very simple - look at sources and tests.
TxtFileLoader
If you have simple text file use TxtFileLoader
.
It makes from file
array ['text1', 'text2', 'text3']
.
setSkipEmptyRows
Skips empty rows or containing only whitespaces trim($s) === ''
. Default: true
.
setSkipComments
Skips rows that start with #
or \s+#
. Default: false
.
All versions of csv-file-loader with dependencies
ext-mbstring Version *