MultiServis.Net //PHP El Kitabý

<<= Önceki Sayfa | PHP Ana Sayfa | Sonraki Sayfa =>>

Virgul ile ayrilmis verilerin islenmesi : (Comma-Seperated Data or CSV) Yazar: Serkan Tarih: 01/03/02

Problem: Verileriniz bir text dosyasi icinde virgul ile ayrilmis olarak bulunuyor.

Cozum : Genelde kullanilan fgets () yerine, PHP ile beraber gelen fgetcsv () fonksiyonunu kullaniniz.

Ornek Kullanim :

> <?php

> $dosya_adi = isset ($argv[0]) ? $argv[0] : “php://stdin”;

> $dosyaya_baglanti = @fopen ($dosya_adi, “r”) or die (“Dosya okunmak icin acilamiyor.”);

> while (!@feof ($dosyaya_baglanti))
> {

> > $satir = @fgetcsv ($dosyaya_baglanti, 1024, ‘,’);
> > if (!is_array ($satir)) {continue; }

> > $satirlar[] = $satir;

> }

> @fclose ($dosyaya_baglanti);

Aciklama : Virgul ile ayrilmis verileri islemek sanildigi kadar kolay degildir.En azindan diger orneklerde oldugu gibi explode () ile bu isin altindan kalkmak gercekten saglam kod yazmakla mumkundur.

Virgul ile ayrilmis verilerin oldugu bir dosyayi en guzel isleme teknigi verileri PHP’nin islemesini saglamaktir.PHP icerisinde hazir gelen fgetcsv () fonksiyonu bu is icin cok kullanislidir.

Peki verilerimiz boyle dosya icerisinde hazir olarak bulunmuyorsa ne yapilabilir?

Bu durumda , islemek istedigimiz virgul ile ayrilmis veri grubunu asagidaki gibi gecici bir dosyaya yazip orada islemektir.

Ornek Kod Parcasi :

> <?php
> //$veri degiskeni islemek istedigimiz virgul ile ayrilmis veriyi temsil etmektedir.

> $gecici_dosya = @tmpfile () or die (“Gecici dosya yaratilamiyor”);
> @fwrite ($gecici_dosya, $veri);
> @fseek ($gecici_dosya, 0, SEEK_SET);

> while (!@feof ($gecici_dosya))
> {

> > $satir = @fgetcsv ($gecici_dosya, 1024, ‘,’);
> > if (!is_array ($satir)) {continue; }

> > $satirlar[] = $satir;

> }

> @fclose ($gecici_dosya);
> //$gecici_dosya bu komut ile dosya kapatildiginda otomatik olarak dosya sisteminden silinir.
> ?>

> Islemciyi, kompleks “Duzenli Ifadeler” kullanarak yormaktansa boyle hazir fonksiyonlari kullanmak daha iyidir.Ustelik daha da hizlidir…

> Serkan Hadi Ceylani
> serkan@turk-php.com

<<= Önceki Sayfa | PHP Ana Sayfa | Sonraki Sayfa =>>