-
Notifications
You must be signed in to change notification settings - Fork 70
/
fgetcsv.xml
212 lines (202 loc) · 7.51 KB
/
fgetcsv.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
<?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
-->