PHP fgetcsv function
The PHP fgetcsv function gets line from file pointer and parse for CSV fields
Descriptionfgetcsv( resource $stream, ?int $length = null, string $separator = ",", string $enclosure = "\"", string $escape = "\\" ): array|falseSintaxis
fgetcsv($stream,$length,$separator,$enclosure,$escape)
Values
Parameters
$stream
– is a data sream getted using fopen or another function to open files(popen(),fsockopen()), pointer to file that is opened.
example: $stream = fopen("mycsv.csv", "r"))
$length
– max length expected from the row obtained from the csv file. This value is optional from PHP 8.0 (default case is the max value posible)
$separator
-(optional) indicates the delimiter, the default value of the delimiter is ","
because csv use , to separate different values.
$enclosure
-(optional) default value "\""
$escape
-(optional) define the escape character, "
is the default , in case \
\"$escape
is equal ""
this property will be disabled.
Return values
Returns an indexed
array on success, false
on failure.
What is a CSV? (.csv file)
Generally is used in programs like excel and another similar programs to perform math operations, organize information, etc. This type of program permit us to export as csv.
The acronym CSV means comma-separated values, and literally is what it does.
For example, if we got the following table in excel:
producto | precio | stock |
percha | 50 | 20 |
almohada | 200 | 12 |
colcha | 511 | 2 |
pantuflas | 150 | 231 |
toalla belagio | 550 | 31 |
acolchado linea blanca | 3300 | 20 |
vela diseño | 208 | 22 |
When we save the file as .csv, if we open it we will see something as follows:
archivo.csvproducto,precio,stock percha,50,20 almohada,200,12 cocha,511,2 pantuflas,150,231 toalla belagio,550,31 acolchado línea blanca,3300,20 vela diseño,208,22
Use example
Let’s start with a very simple example, and see how all have sense.
Obteniendo la primera linea<?php if (($gestor = fopen("cvs.csv", "r")) !== FALSE) { if (($datos = fgetcsv($gestor, 1000, ",")) !== FALSE) var_dump($datos); } ?>
array(5) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" }
Ok, what is happening here?¿I’m not obtaining data? What is happening in this example, is that our table is not starting at position 0,0 or A,0(columns, rows) and thats why we are obtaining the first row with nothing inside it.
When y export my Excel file as .csv this one passed the rows with no value ass ,,,and columns ,,
Now we will see the example of the table that we see on, What is a CSV? (.csv file) but starting from 0,0
ejemplo fgetcsv<?php if (($gestor = fopen("cvs.csv", "r")) !== FALSE) { while (($datos = fgetcsv($gestor, 1000, ",")) !== FALSE) { $numero = count($datos); for ($c=0; $c < $numero; $c++) { echo $datos[$c]; } echo "<br/>"; } fclose($gestor); } ?>
productopreciostock percha5020 almohada20012 colcha5112 pantuflas150231 toalla belagio55031 acolchado linea blanca330020 vela dise�o20822
Exercise:
I gave you 2 examples when save a file as .csv that is not at 0 ,0 we obtain data with white spaces
Create a table in Excel or a similar program that not start at 0,0 and save it as .csv, modify the code in example 2 to depurate the information and obtain only the data that is in the table
To do this exercise successfully, you will need to investigate a little from your part.
[arm_restrict_content plan=”2,” type=”show”] Admin? subsriberS? [armelse] This content is only visible for members – This part is under Test – please do not become a member. [/arm_restrict_content]