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
|