(PHP 4, PHP 5, PHP 7, PHP 8)
fgetcsv — Dosya tanıtıcısından CSV alanlarını çözümleyerek bir satır döndürür
$akım,$uzunluk = null,$ayraç = ",",$sınırlayıcı = "\"",$öncelem = "\\"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-8iseISO-8859-9ile kodlanmış dosyaları bu işlev hatalı okuyacaktır.
akımfopen(), 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.
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.
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.
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.
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.
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: | 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.
|
Ö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);
}
?>