Files
php-doc-ru/reference/filesystem/functions/fgetcsv.xml
Andrey Gromov ab0acd6dd0 upd
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@344990 c90b9560-bf6c-de11-be94-00142212c4b1
2018-05-08 16:17:09 +00:00

229 lines
8.6 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: 52000a5e514b19e1f7b23be80ab9d7bcc47099dc Maintainer: shein Status: ready -->
<!-- Reviewed: yes -->
<!-- $Revision$ -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.fgetcsv">
<refnamediv>
<refname>fgetcsv</refname>
<refpurpose>Читает строку из файла и производит разбор данных CSV</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>fgetcsv</methodname>
<methodparam><type>resource</type><parameter>handle</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>length</parameter><initializer>0</initializer></methodparam>
<methodparam choice="opt"><type>string</type><parameter>delimiter</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>
Данная функция похожа на функцию <function>fgets</function>, с той
разницей, что она производит анализ строки на наличие записей
в формате <acronym>CSV</acronym> и возвращает найденные поля
в качестве массива.
</para>
<note>
<para>
Эта функция принимает во внимание настройки локали. К примеру,
если <literal>LANG</literal> установлена в <literal>en_US.UTF-8</literal>,
то файлы в однобайтовой кодировке будут неправильно прочитаны этой
функцией.
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>handle</parameter></term>
<listitem>
<para>
Корректный файловый указатель на файл, успешно открытый при помощи
<function>fopen</function>, <function>popen</function> или
<function>fsockopen</function>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>length</parameter></term>
<listitem>
<para>
Должен быть больше самой длинной строки (в символах), найденной в CSV-файле
(включая завершающий символ конца строки). В противном случае, строка
будет разбита на куски длиной в <parameter>length</parameter> символов,
если только место разрыва не будет внутри ограничителей полей (enclosure).
</para>
<para>
Отсутствие этого параметра (или установка его в 0 в PHP 5.1.0 и выше) приведет к
тому, что длина строки будет неограничена. Это может сказаться на скорости выполнения.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>delimiter</parameter></term>
<listitem>
<para>
Необязательный параметр <parameter>delimiter</parameter> устанавливает
разделитель поля (только один символ).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>enclosure</parameter></term>
<listitem>
<para>
Необязательный параметр <parameter>enclosure</parameter> устанавливает
символ ограничителя поля (только один символ).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>escape</parameter></term>
<listitem>
<para>
Необязательный параметр <parameter>escape</parameter> устанавливает
экранирующий символ (только один символ).
</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>
Возвращает индексированный массив с прочтенными полями.
</para>
<note>
<para>
Пустая строка CSV-файла будет возвращена в качестве массива,
содержащего единственный элемент <type>null</type>, ошибки
в данном случае не возникнет.
</para>
</note>
&note.line-endings;
<para>
<function>fgetcsv</function> возвращает &null;, если передаётся неверный
параметр <parameter>handle</parameter> или &false; при других ошибках,
в том числе и при достижении конца файла.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>5.3.0</entry>
<entry>
Добавлен параметр <parameter>escape</parameter>
</entry>
</row>
<row>
<entry>5.1.0</entry>
<entry>
Параметр <parameter>length</parameter> стал необязательным.
По умолчанию равен <literal>0</literal>, что означает отсутствие ограничения длины.
<!--
Note to documentors: the length parameter was actually
made optional in PHP 5.0.4 but didn't behave properly.
Let's gloss over that here. :)
-->
</entry>
</row>
<row>
<entry>4.3.5</entry>
<entry>
<function>fgetcsv</function> теперь безопасна для обработки бинарных данных
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Чтение и вывод на экран содержимого CSV-файла</title>
<programlisting role="php">
<![CDATA[
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num полей в строке $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>str_getcsv</function></member>
<member><function>explode</function></member>
<member><function>file</function></member>
<member><function>pack</function></member>
<member><function>fputcsv</function></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
-->