fgetcsv

(PHP 4, PHP 5, PHP 7, PHP 8)

fgetcsvDosya tanıtıcısından CSV alanlarını çözümleyerek bir satır döndürür

Açıklama

fgetcsv(
    resource $akım,
    ?int $uzunluk = null,
    string $ayraç = ",",
    string $sınırlayıcı = "\"",
    string $öncelem = "\\"
): array|false

Satırı okuyup CSV biçemindeki alanları bir dizi içinde döndürmesi dışında fgets() işlevi gibidir.

Bilginize:

Bu işlevde yerel ayarları hesaba katılır. Eğer LANG, örneğin, tr_TR.UTF-8 ise ISO-8859-9 ile kodlanmış dosyaları bu işlev hatalı okuyacaktır.

Bağımsız Değişkenler

akım

fopen(), popen()veya fsockopen() tarafından başarıyla açılmış geçerli bir dosyanın tanıtıcısı.

uzunluk

CSV dosyasındaki en uzun satırdan (satırsonu karakterleri dahil) daha büyük bir değer içermelidir. Parçalara ayırma sınırlı bir alanda gerçekleşmeyecekse, satır uzunluk karakterden oluşan parçalara bölünür.

Bu bağımsız değişkenin belirtilmemesi (veya PHP 8.0.0 ve sonrası için 0 veya null belirtilmesi) durumunda azami satır uzunluğu sınırlanmaz fakat işlem yavaşlar.

ayraç (separator)

Alan ayracı belirtilir. Ayraç karakteri tek baytlık olmalıdır.

sınırlayıcı (enclosure)

Alan sınırlayıcı belirtilir. Sınırlayıcı karakter tek baytlık olmalıdır.

öncelem (escape)

Önceleme karakteri belirtmekte kullanılır. Sınırlayıcı karakter tek baytlık olmalıdır, boş dizge de belirtilebilir. Boş dizge ("") özel önceleme düzeneğini iptal eder.

Uyarı

Girdi akımında, genellikle bir sınırlayıcı karakter alanın içinde çiftlenerek öncelenir ve sonuç dizgesinde yalnızca tek bir sınırlayıcı karakter yer alır. öncelem karakteri ise farklı çalışır: Girdi dizgesinde bir alan içinde öncelem ve sınırlayıcı karakterlerin her ikisi de varsa sonuç dizgesinde her ikisi de yer alır. Bu nedenle, öntanımlı değerler için, "a""b","c\"d" gibi bir CSV satırının alanları sırasıyla a"b ve c\"d olarak ayrıştırılır.

Uyarı

PHP 8.4.0 ve sonrasında, öncelem öntanımlı değerine bağlı olarak kullanım dışıdır. Açıkça ya konumsal olarak ya da isimli bağımsız değişkenler kullanılarak sağlanması gerekir.

Uyarı

When escape is set to anything other than an empty string ("") it can result in CSV that is not compliant with » RFC 4180 or unable to survive a roundtrip through the PHP CSV functions. The default for escape is "\\" so it is recommended to set it to the empty string explicitly. The default value will change in a future version of PHP, no earlier than PHP 9.0.

Dönen Değerler

Başarı durumunda okunan alanları içeren indisli bir dizi, başarısızlık durumunda false döner.

Bilginize:

CSV dosyasındaki boş bir satır tek bir null içeren bir dizi olarak döndürülür ve bir hata olarak ele alınmaz.

Bilginize: Eğer PHP'nin Macintosh bilgisayarlarda çalışırken veya bu bilgisayarlarda oluşturulmuş dosyalarla çalışırken satır sonlarını tanımamaması gibi bir sorunla karşılaşılaşılırsa, auto_detect_line_endings çalışma anı seçeneği etkin kılınarak bu sorun çözülebilir.

Hatalar/İstisnalar

ayraç veya sınırlayıcı tek bayt uzunlukta değilse ValueError istisnası oluşur.

öncelem tek bayt uzunlukta değilse veya boş dizge ise ValueError istisnası oluşur.

Sürüm Bilgisi

Sürüm: Açıklama
8.4.0 öncelem bağımsız değişkeninin öntanımlı değerine güvenmek artık kullanım dışıdır.
8.3.0 Son alan yalnızca sonlandırılmamış bir sınırlayıcı içeriyorsa, tek bir boş bayt (\0) içeren dizge yerine boş bir dizge ("") döndürülür.
8.0.0 uzunluk artık null olabiliyor.
7.4.0 öncelem bağımsız değişkeni özel önceleme mekanizmasını iptal etmek için boş dizge kabul ediyor.

Örnekler

Örnek 1 - Bir CSV dosyasının okunup basılması

<?php
$row
= 1;
if ((
$handle = fopen("test.csv", "r")) !== FALSE) {
while ((
$data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo
"<p> $row satırındaki $num alan: <br /></p>\n";
$row++;
for (
$c=0; $c < $num; $c++) {
echo
$data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>

Ayrıca Bakınız