PHP.mk документација

SplFileObject::fgetcsv

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

splfileobject.fgetcsv.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека splfileobject.fgetcsv.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
SplFileObject::fgetcsv

Референца за `splfileobject.fgetcsv.php` со подобрена типографија и навигација.

splfileobject.fgetcsv.php

SplFileObject::fgetcsv

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

SplFileObject::fgetcsvЗема ред од датотека и го парсира како CSV полиња

= NULL

public SplFileObject::fgetcsv(string $separator = ",", string $enclosure = "\"", string $escape = "\\"): array|false

Зема ред од датотеката што е во CSV формат и враќа низа што ги содржи прочитаните полиња.

Забелешка: Поставките за локалот се земени предвид од оваа функција. На пример, податоците кодирани во одредени еднобајтни кодови може да се парсираат погрешно ако LC_CTYPE is en_US.UTF-8.

Параметри

separator

Низа од вредности. , Ограничувач на полето (само еден еднобајтен знак). Стандардно SplFileObject::fputcsv().

enclosure

или вредноста поставена со претходен повик до " Ограничувач на полето (само еден еднобајтен знак). Стандардно SplFileObject::fputcsv().

escape

Затворач на полето (само еден еднобајтен знак). Стандардно \ Ограничувач на полето (само еден еднобајтен знак). Стандардно SplFileObject::fputcsv()Знак за бегство (најмногу еден еднобајтен знак). Стандардно"") го оневозможува патентираниот механизам за бегство.

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Во влезната струја, enclosure знакот секогаш може да се избегне со удвојување во заградена низа, што резултира со еден enclosure знак во парсираниот резултат. На escape знак работи поинаку: Ако се појави низа од escape and enclosure знаци во влезот, двата знака ќе бидат присутни во парсираниот резултат. Значи, за стандардните параметри, CSV ред како "a""b","c\"d" ќе ги има полињата анализирани како a"b and c\"d, соодветно.

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Од PHP 8.4.0, во зависност од стандардната вредност на escape е застарено. Треба да се обезбеди експлицитно или позиционо или со користење на . Празен стринг (Именувани аргументи SplFileObject::fputcsv().

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Кога escape е поставено на нешто различно од празен стринг ("") може да резултира со CSV што не е во согласност со параметри поставува прилагодена секвенца за крај на линијата. или не може да преживее враќање низ CSV функциите на PHP. Стандардното за escape is "\\" затоа се препорачува експлицитно да се постави на празен стринг. Стандардната вредност ќе се промени во идна верзија на PHP, не порано од PHP 9.0.

Вратени вредности

Враќа индексиран список што ги содржи прочитаните полиња, или false при грешка.

Забелешка:

Празен ред во CSV датотека ќе се врати како низ што се состои од еден null поле освен ако не се користи SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE, во кој случај празните редови се прескокнуваат.

Errors/Exceptions

Фрла ValueError if separator or enclosure не е долг еден бајт.

Фрла ValueError if escape не е долг еден бајт или е празен стринг.

Дневник на промени

Верзија = NULL
8.4.0 Ослонувањето на стандардната вредност на escape не е валидна опција
7.4.0 На escape параметарот сега прифаќа и празен стринг за да го оневозможи сопствениот механизам за бегство.

Примери

Пример #1 - Добива линија од датотечен покажувач и парсира за CSV полиња example

<?php
$file
= new SplFileObject("data.csv");
while (!
$file->eof()) {
var_dump($file->fgetcsv());
}
?>

Пример #2 SplFileObject::READ_CSV example

<?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);
}
?>

Содржина на animals.csv

crocodile,reptile,4
dolphin,mammal,0
duck,bird,2
koala,mammal,4
salmon,fish,0

Горниот пример ќе прикаже нешто слично на:

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

Види Исто така

Белешки од корисници 6 белешки

android991 на gmail точка com
пред 7 години
Be aware.
There is bug 46569 persists that breaks usage of SplFileObject::fgetcsv() after SplFileObject::seek()-ing to a non-zero position and then returns the contents of wrong line - off by one
<?php
$file = new SplFileObject('foo/bar.csv');
$file->seek(1);
print_r($file->fgetcsv()); // reads 3rd line against 2nd
InvisibleSmiley
пред 4 години
Not that this may return NULL instead of FALSE depending on the given SplFileObject flags in versions prior to PHP 8.1.

Change: https://github.com/php/php-src/commit/188b1d4c7c7b3482584e248522d94e06ba616a1c

Testcase: https://3v4l.org/6dQTT
Denitz
пред 7 години
If your CSV doesn't have enclosures, you can face an issue with default " identified as enclosure in data. Empty $enclosure is not allowed, but you can use same $enclosure as $delimiter (\n by default) to emulate empty enclosure.
v-fpiris на teknober точка com
пред 14 години
after setting the delimiter '\t' fgetcsv() truncates the value when it is empty string 

workaround:

<?php
$file = new SplFileObject($path);
$file->setFlags(SplFileObject::DROP_NEW_LINE);
while ($file->valid()) {
    $line = $file->fgets();
    $line = explode("\t", $line);

    print_r($line);
}
?>
vaughn точка clayton+php на servicetrade точка com
пред 13 години
Note that due to bugs 55807 and 61032, introduced in 5.3.8, if the csv in example #2 has a newline character at the end of each line, the foreach will execute 6 times.

The last time through the loop $row will be bool(false). This is true even if using SplFileObject::SKIP_EMPTY and SplFileObject::DROP_NEW_LINE.

Until the bug is fixed, the workaround is to also add SplFileObject::READ_AHEAD to your setFlags() call.
jbrauer
пред 6 години
Also while the enclosure character cannot be NULL you can set it to ASCII NUL character chr(0) with the same practical effect.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.