Files
Leonardo Lara Rodrigues 71b298167a sync with en rev
2026-01-16 16:44:36 -03:00

213 lines
6.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 0a3648a71895f35f570573d31ca9e003786aa993 Maintainer: leonardolara Status: ready --><!-- CREDITS: fernandowobeto,leonardolara -->
<refentry xml:id="splfileobject.fgetcsv" xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude">
<refnamediv>
<refname>SplFileObject::fgetcsv</refname>
<refpurpose>Obtém linha do arquivo e interpreta como campos CSV</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis role="SplFileObject">
<modifier>public</modifier> <type class="union"><type>array</type><type>false</type></type><methodname>SplFileObject::fgetcsv</methodname>
<methodparam choice="opt"><type>string</type><parameter>separator</parameter><initializer>","</initializer></methodparam>
<methodparam choice="opt"><type>string</type><parameter>enclosure</parameter><initializer>"\""</initializer></methodparam>
<methodparam choice="opt"><type>string</type><parameter>escape</parameter><initializer>"\\"</initializer></methodparam>
</methodsynopsis>
<para>
Obtém uma linha do arquivo no formato <acronym>CSV</acronym> e retorna um array contendo os campos lidos.
</para>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('function.fgetcsv')/db:refsect1[@role='description']//db:note/.)">
<xi:fallback/>
</xi:include>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>separator</parameter></term>
<listitem>
<para>
O delimitador de campo (apenas um caractere de um byte).
Padrão é uma vírgula (<literal>,</literal>) ou o valor definido por uma chamada anterior a
<methodname>SplFileObject::setCsvControl</methodname>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>enclosure</parameter></term>
<listitem>
<para>
O caractere de delimitador de campo (apenas um caractere de um byte).
Padrão é uma aspa dupla (<literal>"</literal>) ou o valor definido por uma chamada anterior a
<methodname>SplFileObject::setCsvControl</methodname>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>escape</parameter></term>
<listitem>
<para>
O caractere de escape (no máximo um caractere de um byte).
Padrão é uma barra invertida (<literal>\</literal>) ou o valor definido por uma chamada anterior a
<methodname>SplFileObject::setCsvControl</methodname>.
Uma string vazia (<literal>""</literal>) desativa o mecanismo de escape proprietário.
</para>
<xi:include xpointer="function.fgetcsv..warn.escape.parameter"/>
<warning>
<simpara>
A partir do PHP 8.4.0, depender do valor padrão de
<parameter>escape</parameter> foi descontinuado.
Ele precisa ser fornecido explicitamente tanto por posição quanto pelo uso
de <link linkend="functions.named-arguments">argumentos nomeados</link>,
ou por uma chamada a <methodname>SplFileObject::setCsvControl</methodname>.
</simpara>
</warning>
</listitem>
</varlistentry>
</variablelist>
</para>
&warning.csv.escape-parameter;
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Retorna um array indexado contendo os campos lidos, ou &false; em caso de erro.
</para>
<note>
<para>
Uma linha em branco em um arquivo CSV será retornada como um array
composto por um único campo &null; a menos que esteja usando <constant>SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE</constant>,
caso em que as linhas em branco são ignoradas.
</para>
</note>
</refsect1>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('function.fgetcsv')/db:refsect1[@role='errors']/.)">
<xi:fallback/>
</xi:include>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<xi:include xpointer="xmlns(db=http://docbook.org/ns/docbook) xpointer(id('function.fgetcsv')/db:refsect1[@role='changelog']//db:row[db:entry[text()='8.4.0']]/.)">
<xi:fallback/>
</xi:include>
<row>
<entry>7.4.0</entry>
<entry>
O parâmetro <parameter>escape</parameter> agora também aceita uma string vazia
para desativar o mecanismo de escape proprietário.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Exemplo de <methodname>SplFileObject::fgetcsv</methodname></title>
<programlisting role="php">
<![CDATA[
<?php
$file = new SplFileObject("data.csv");
while (!$file->eof()) {
var_dump($file->fgetcsv());
}
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Exemplo de <constant>SplFileObject::READ_CSV</constant></title>
<programlisting role="php">
<![CDATA[
<?php
$file = new SplFileObject("animals.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
list($animal, $class, $legs) = $row;
printf("A %s is a %s with %d legs\n", $animal, $class, $legs);
}
?>
]]>
</programlisting>
<para>Conteúdo de animals.csv</para>
<programlisting role="txt">
<![CDATA[
crocodile,reptile,4
dolphin,mammal,0
duck,bird,2
koala,mammal,4
salmon,fish,0
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
A crocodile is a reptile with 4 legs
A dolphin is a mammal with 0 legs
A duck is a bird with 2 legs
A koala is a mammal with 4 legs
A salmon is a fish with 0 legs
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<simplelist>
<member><methodname>SplFileObject::fputcsv</methodname></member>
<member><methodname>SplFileObject::setCsvControl</methodname></member>
<member><methodname>SplFileObject::getCsvControl</methodname></member>
<member><methodname>SplFileObject::setFlags</methodname></member>
<member><constant>SplFileObject::READ_CSV</constant></member>
<member><methodname>SplFileObject::current</methodname></member>
<member><function>fputcsv</function></member>
<member><function>fgetcsv</function></member>
<member><function>str_getcsv</function></member>
</simplelist>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->