(PHP 4, PHP 5, PHP 7, PHP 8)
fgetcsv — Obtiene una línea desde un puntero de archivo y la analiza para campos CSV
$stream,$length = null,$separator = ",",$enclosure = "\"",$escape = "\\"Similar a fgets() pero fgetcsv() analiza la línea que lee y busca los campos CSV, que devuelve en un array que los contiene.
Nota: Los parámetros de configuración local son tenidos en cuenta por esta función. Por ejemplo, los datos codificados en ciertos juegos de caracteres de un byte pueden ser analizados incorrectamente si
LC_CTYPEesen_US.UTF-8.
streamUn puntero válido a un archivo abierto con fopen(), popen() o fsockopen().
length
Debe ser mayor que la línea más larga (en términos de caracteres)
a leer en el archivo (incluyendo el carácter de fin de línea).
En caso contrario la línea será dividida en fragmentos de length caracteres,
a menos que la división ocurra dentro de un encierro.
Omitir este parámetro (o establecerlo a 0, o null en PHP 8.0.0 o
versiones posteriores) hace que la longitud máxima de la línea no esté limitada,
lo cual es ligeramente más lento.
separator
El parámetro separator define el separador de campo.
Debe tratarse de un carácter de un solo byte.
enclosure
El parámetro enclosure define el carácter de encierro de los campos.
Debe tratarse de un carácter de un solo byte.
escape
El parámetro escape define el carácter de escape.
Debe tratarse de un carácter de un solo byte o una cadena vacía.
La cadena vacía ("") desactiva el mecanismo de escape propietario.
Nota: Generalmente un carácter de encierro
enclosurees escapado dentro de un campo duplicándolo; Sin embargo, el carácter de escapeescapepuede ser utilizado como alternativa. Por lo tanto, para los valores por omisión""y\"tienen el mismo significado. Además de escapar el carácter de encierroenclosureel carácter de escapeescapeno tiene significado especial; ni siquiera para escapar a sí mismo.
A partir de PHP 8.4.0, el uso del valor por omisión de
escape está deprecado.
Debe ser proporcionado explícitamente ya sea por posición o mediante el uso
de los argumentos nombrados.
When escape is set to anything other than an empty string
("") it can result in CSV that is not compliant with
» RFC 4180 or unable to survive a roundtrip
through the PHP CSV functions. The default for escape is
"\\" so it is recommended to set it to the empty string explicitly.
The default value will change in a future version of PHP, no earlier than PHP 9.0.
Devuelve un array indexado que contiene los campos leídos en caso de éxito, o false si ocurre un error.
Nota:
Una línea vacía en un archivo CSV será devuelta en forma de un array que contiene el valor
nully no será tratada como un error.
Nota: Si PHP no reconoce correctamente los finales de línea al leer archivos que han sido creados o leídos en un Macintosh, la activación de la opción de configuración auto_detect_line_endings puede resolver el problema.
Genera una ValueError si
separator o enclosure
no tiene una longitud de un byte.
Genera una ValueError si
escape no tiene una longitud de un byte o es una cadena vacía.
| Versión | Descripción |
|---|---|
| 8.4.0 |
Confiar en el valor por omisión de escape está ahora
deprecado.
|
| 8.3.0 | Una cadena vacía es devuelta en lugar de una cadena que contiene un solo byte nulo para el último campo si este contiene únicamente un delimitador no terminado. |
| 8.0.0 |
length ahora es nullable.
|
| 7.4.0 |
El parámetro escape ahora acepta una cadena vacía
para desactivar el mecanismo de escape propietario.
|
Ejemplo #1 Lee y muestra el contenido de un archivo CSV
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num campos en la línea $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>