1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-25 16:22:18 +01:00
Files
archived-doc-ru/reference/spl/splfileobject/fgetcsv.xml
2024-04-17 06:00:30 +03:00

213 lines
7.5 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 61374bbe228e8e9c55a24aba59a1e2bb2a871148 Maintainer: tmn Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="splfileobject.fgetcsv" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>SplFileObject::fgetcsv</refname>
<refpurpose>
Получает строку из указателя файла и анализирует её на 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>
Метод получает строку из <acronym>CSV</acronym>-файла и возвращает массив
с прочитанными полями.
</para>
<note>
<para>
Метод учитывает настройки локали. Если для константы <constant>LC_CTYPE</constant>
установили значение, например, <literal>en_US.UTF-8</literal>,
метод может неправильно прочитать файлы в однобайтовой кодировке.
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>separator</parameter></term>
<listitem>
<para>
Разделитель полей (только один однобайтовый символ). По умолчанию это запятая или символ, который
задали методом <methodname>SplFileObject::setCsvControl</methodname>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>enclosure</parameter></term>
<listitem>
<para>
Символ ограничителя полей (только один однобайтовый символ). По умолчанию это двойные кавычки или
значение, которое установили методом
<methodname>SplFileObject::setCsvControl</methodname>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>escape</parameter></term>
<listitem>
<para>
Экранирующий символ (не более одного однобайтового символа). По умолчанию это обратный слеш
(<literal>\</literal>) или значение, которое установили методом
<methodname>SplFileObject::setCsvControl</methodname>.
Пустая строка (<literal>""</literal>) отключает собственный механизм экранирования.
</para>
<note>
<simpara>
Обычно символ <parameter>enclosure</parameter> экранируется внутри поля путём удваивания;
однако, символ <parameter>escape</parameter> разрешается использовать как альтернативу.
Поэтому у значений по умолчанию для этих параметров <literal>""</literal> и <literal>\"</literal>
одинаковые значения. Кроме разрешения экранировать символ
<parameter>enclosure</parameter> символ
<parameter>escape</parameter> не имеет особого значения; он даже не экранирует самого себя.
</simpara>
</note>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Метод возвращает массив, который содержит данные прочитанной строки, или &false;, если возникла ошибка.
</para>
<note>
<para>
Пустая строка CSV-файла будет возвращаться в виде массива, который содержит
единственный элемент &null;, если не используется
<constant>SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE</constant>,
и тогда пустые строки пропускаются.
</para>
</note>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.4.0</entry>
<entry>
Теперь параметр <parameter>escape</parameter> принимает пустую строку для
отключения собственного механизма экранирования.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования метода <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>Пример использования <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>Contents of 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;
<para>
<simplelist>
<member><methodname>SplFileObject::setCsvControl</methodname></member>
<member><methodname>SplFileObject::setFlags</methodname></member>
<member><link linkend="splfileobject.constants.read-csv">SplFileObject::READ_CSV</link></member>
<member><methodname>SplFileObject::current</methodname></member>
</simplelist>
</para>
</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
-->