표준 PHP 라이브러리(SPL) SplFileObject::fgetcsv
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::fgetcsv — 파일에서 줄을 가져오고 CSV 필드로 구문 분석합니다.
설명
public SplFileObject::fgetcsv(string $separator
= ",", string $enclosure
= "\"", string $escape
= "\\"): array|false
CSV 형식의 파일에서 한 줄을 가져오고 읽은 필드가 포함된 배열을 반환합니다.
메모: 이 함수는 로케일 설정을 고려합니다. LC_CTYPE
이 예를 들면 en_US.UTF-8
, 1바이트 인코딩의 파일은 이 함수로 잘못 읽을 수 있습니다.
매개변수
separator
- 필드 구분 기호(1바이트 문자만 해당). 기본값은 쉼표 또는 SplFileObject::setCsvControl()을 사용하여 설정된 값입니다.
enclosure
- 필드 엔클로저 문자(단일 바이트 문자 1개만). 기본값은 큰따옴표 또는 SplFileObject::setCsvControl()을 사용하여 설정된 값입니다.
escape
- 이스케이프 문자(최대 1바이트 문자). 기본값은 백슬래시(
\
) 또는 SplFileObject::setCsvControl()을 사용하여 설정된 값입니다. 빈 문자열(""
)은 독점 이스케이프 메커니즘을 비활성화합니다.참고: 일반적으로
enclosure
문자는 두 배로 필드 내부에서 이스케이프됩니다. 그러나escape
문자를 대안으로 사용할 수 있습니다. 따라서 기본 매개변수 값""
과\"
의 경우 동일한 의미를 갖습니다.enclosure
문자를 이스케이프하는 것을 제외하고escape
문자는 특별한 의미가 없습니다.
반환 값
읽은 필드를 포함하는 인덱스 배열을 반환하거나 오류가 발생하면 false
를 반환합니다.
메모: CSV 파일의 빈 줄은 단일 null
필드로 구성된 배열로 반환되고 SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE
를 사용하지 않는 경우, 이 경우 빈 줄은 건너뜁니다.
변경 로그
버전 | 설명 |
---|---|
7.4.0 | escape 매개변수는 이제 독점 이스케이프 메커니즘을 비활성화하기 위해 빈 문자열도 허용합니다. |
Examples
예제 #1 SplFileObject::fgetcsv() 예제
<?php
$file = new SplFileObject("data.csv");
while (!$file->eof()) {
var_dump($file->fgetcsv());
}
?>
예제 #2 SplFileObject::READ_CSV 예제
<?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
기타
- SplFileObject::setCsvControl() - CSV의 구분 기호, 인클로저 및 이스케이프 문자 설정
- SplFileObject::setFlags() - SplFileObject에 대한 플래그를 설정합니다.
- SplFileObject::READ_CSV
- SplFileObject::current() - 파일의 현재 줄 검색