PHP için Türkçe El Kitabı

Embed Size (px)

Citation preview

  • 8/14/2019 PHP iin Trke El Kitab

    1/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    PHP in Trke El Kitab - rnekler ve A klamalar

    Yazar

    serhat_alpaslan

    Yayin Tarihi: 26 Aral k, 2005 Pazartesi

    PHP DiliPHP yorumlayicisi, bu "programi" alistirabilmek iin dosyanin iinde PHP komutlarini arar. PHPkomutlari birinci blmde grdgmz gibi iki sekilde yazilabilir:PHP: Bunlara PHP komut ayraci denir; birinci tr uzun veya standart ayra sayilir; ikincisine ike"kisaayra" denir.

    PHP kodlarimiz, olusturulmasini istedigimiz sayfanin HTML kodlari ile tabir yerinde ise iieyazilir.PHP: Sayfalara yorum eklemek iin;PHP:

    Sayfa 1/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    2/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Buraya istedigimiz kadar yorum yazabiliriz. */ print "Merhaba Dnya!"; // Bu ise PHP'nin tek satirli yorum blm # Bu satirlari da PHP yorumcusu dikkate almayacaktir. ?> DegiskenlerPHP'de de, bir ok baska bilgisayar programlama dilinde oldugu gibi degiskenlerin iine birdeger

    konmadan nce tanimlanmasi mmkndr; fakat gerekli degildir. Degiskenleri adinin nne $isaretikoyarak tanimlariz:PHP: PHP'de genellikle degiskenleri degerini atayarak belirleriz:PHP:

    Degiskenler, kullanildiklari isleme, tasidiklari degeri verirler:PHP: PHP'de zel bir degiskene degisken adi olarak kullanilacak degerleri de atayabiliriz:PHP:

  • 8/14/2019 PHP iin Trke El Kitab

    3/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    $adi = "Resit"; $degisken = "adi"; print $$degisken; ?>Burada Browser penceresine yine "Resit" kelimesi yazilacaktir; nk PHP $degisken adlidegiskenin"adi" adli degiskeni tuttugunu bilecek ve iki Dolar isaretini grnce, $degisken'in degerinidegil,onun tuttugu degiskenin degerini yazacaktir.Veri TrleriPHP aisindan dnyada alti tr deger vardir:Tamsayi (Integer): 5,124, 9834 gibiift (Double) : 3,567 gibiAlfanmerik (String) : "Resit" gibiMantiksal (Boolean): dogru (true)/yanlis (false) gibiNesne (Object)Dizi (Array)Tr DegistirmeBir degiskenin degerinin tr hakkinda kuskunuz varsa, en emin yol bunu PHP'nin kendisinesormaktir. Bu sorgulamayi gettype() fonksiyonu ile yapariz.Simdi, bir PHP programi yazalim, bir takim degiskenlere degerler atayalim ve bunlarintrleriniPHP'ye soralim.PHP:

  • 8/14/2019 PHP iin Trke El Kitab

    4/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    print "
    "; $mantiksal = true; print "nc degiskenin adi: \$mantiksal
    "; print "Degeri : "; print "$mantiksal
    "; print("Tr : "); print gettype( $mantiksal ) ; //mantiksal/boolean print "
    "; print "
    "; ?>[PAGEBREAK]Burada mantiksal (boolean) deger olarak dogru anlamina true degeri atadigimiz halde, PHP'ninbu

    degiskenin degeri olarak 1'i gsterdigine dikkat edin. PHP'de bir fonksiyon, elde ettigi degerdogru ise sonu olarak 1 degerini verir. (Yanlis/false degerinin neye evrildigini bulabilirmisiniz?)EscapeSu satirdaki, ters-bl isareti dikkatinizden kamamis olmali:PHP: PHP iin zel anlami olan isaretlerin anlamlandirilmasini nlemek ve bu isaretleri dz metinsaymasini saglamak iin bu isaretlerin nne ters-bl isareti koyariz.syledir:

    \' Tek tirnak\" ift tirnak\\ Ters-bl\$ Dolar isareti\n Yeni Satir (New Line)\r Satir Basi (Return)\t Sekme (Tab) karakteri

    Kimi zaman bir degiskene atadigimiz degerin trn degistirmek gerekir. Bunu settype()fonksiyonuile yapariz.PHP:

  • 8/14/2019 PHP iin Trke El Kitab

    5/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    settype( $degisken, string ); //alfanmerik/string (integer,double,booleon) print "Degeri : "; print "$degisken
    "; print("Tr : "); print gettype( $degisken ) ; //alfanmerik/string print "
    "; print "
    "; ?>Drt yararli fonksiyonisset() ve unset()isset() fnksiyonu, PHP'nin bir degiskenin iinde deger bulunup bulunmadigini sinamasinisaglar.unset() ise varolan bir degiskeni yok eder.if (isset($bir_degisken)) {print( $bir_degisken );}else {unset($bir_degisken);}Bu kod parasi, $bir_degisken isimli dgiskenin ii bos degisse, ierigini grntleyecek, iibosise varligina son verecektir.empty()isset() fonksiyonun tersi isleve sahiptir; bir degiskene deger atanmamissa, veya degeri sifir

    veyabos alfanmerik (null string) ise, dogru (True) degeri verir.PHP:

    is_string(),is_integer(),is_double(),Sinadiklari degiskenin aradiklari trden deger iermesi halinde dogru 'True) sonu verirler.PHP:

  • 8/14/2019 PHP iin Trke El Kitab

    6/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    if (is_int($c)) { print ("C Integer'dir
    "); } ?>Bu kod, Browser penceresine "A double'dir, B String'dir, C Integer'dir" yazdiracaktir. PHP'debufonksiyonlara benzeyen fakat baska tr deger arayan su fonksiyonlar da vardir: is_array(),is_object.Islemciler (Operatrler)Aritmetik islemciler:+ Toplama 6+5 = 11- ikartma 6-5 = 1

    / Blme 6/5 = 1.2* arpma 6*5 = 30% Kalan (Modulus) 6%5 = 1PHP: [PAGEBREAK]Rastgele SayiPHP: PHP'nin atama islemcisinin esittir (=) isareti oldugunu hatirliyorsunuz birlesik-atama(combined-assignment) islemcileri, bu isarete diger aritmetik islemciler eklenerek olusturulur.

    Islemci rnek Anlami+= $a += 5 $a = $a + 5-= $a -= 5 $a = $a - 5/= $a /=5 $a = $a / 5*= $a *= 5 $a = $a * 5%= $a %= 5 $a = $a % 5

    .= $a .= "metin" $a = $a" metin"Bir Arttirmak veya Azaltmak iin

    Sayfa 6/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    7/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Degerleri sadece 1 arttirmak veya azaltmak iin PHP, bir kolaylik saglar:$a++ veya ++$a : $a'nin degerini 1 arttirir;$a-- veya --$a : $a'nin degerini 1 eksiltir.

    PHP'nin karsilastirma yapmasi iin kullandigimiz islemciler ise islem isaretinin sagi vesolundakidegerleri veya degiskenlerin degerlerini isaretin belirttigi karsilastirmayi yaptiktan sonraortayaya dogru (true) ya da yanlis (false) sonucunu ikartirlar.Islemci rnek rnek $a=6 ise:== esitse $a == 5 Yanlis/False!= esit degilse $a != 5 Dogru/True=== ayni ise $a === 5 Yanlis/False> bykse $a > 5 Doguru/True

  • 8/14/2019 PHP iin Trke El Kitab

    8/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Tanimlanmis olan bir sabiti yeniden olusturamayiz; ama buna tesebbs ettigimizde PHP hatavermez.Bir sabit degerin olusturulmus olup olmadigini defined() fonksiyonu ile anlayabiliriz:PHP:

    [PAGEBREAK]Dizi-DegiskenlerDizi degiskenden ayrintili sz edebilmek iin nce tipik bir dizi-degiskende neler oldugunabakalim. Szgelimi, verdiginiz "PHP ile Programlama" kursundaki grencilerinizin listesisyleolabilir:Dizi Degisken OlusturalimSimdi, PHP bize yle bir ara vermeli ki, biz bir kerede bu listenin tmn, her bir gesinesankibir degiskenin degeri imis gibi tek-tek, veya bir kaina birden ulasabilmeli ve arzu ettigimizzaman notlari doldurabilmeliyiz. grenciler de yapacagimiz Web sitesine girerek, kendinotlarinigrebilmeli ve notlarini inceleyebilmeli. PHP'nin bu amala sagladigi ara, ok-boyutludizi-degisken olusturma aracidir. Ve bu arala yukaridaki listeyi aynen syle yapabiliriz.PHP:

    Programdaki "print()" komutunu sadece dizi degiskeni dogru yazip yazmadigimizi sinamakamaciyla

    Sayfa 8/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    9/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    yazdik; bu programi Browser'da atiginizda yazdiginiz ilk ismi Browser penceresindegryorsaniz,dizi-degiskeni dogru sekilde olusturdunuz demektir. Burada, array() komutnu yazarken, sslparantez degil, normal parantez kullandigimiza ve herbir elemanin degerlerinin sonunda

    vriglolduguna dikkat edir. Bir diger nemli nokta: endeks adlari bir kelimeden fazla ise bunlaritirnakiine alarak belirtmektir. rnegin:array ( adi => "zbay", soyadi => "Altun", "Sinav 1 Notlari" =>"", "Sinav 2 Notlari"=>"", "Toplam Not Ortalamasi" =>""),Burada, daha ncekilere benzer bir sekilde adlandirilmis $ogrenciler degiskenin ieriginiarray()komutu ile doldurdugumuzu gryoruz. Array() ile byle ok boyutlu ve ierdigi degerlerinher

    birinin bir "endeks adi" olan dizi-degiskene Iliskili Dizi (Associative array) de denir. Perlbilenler ise bu tr degiskenlere "Hash" dendigini hatirlayacaklardir. Iliskili Dizi'lerin birincisatiri 0, ikinci satiri 1, nc satiri 2.. diye numaralandirilir. Bu dizinin o satirindaki kaydinsira endeksidir. Ayrica burada "adi," "soyadi," "sinav1" .. dizi degiskenin iindeki degerlerinendeks adidir. Yani bu degerlere atifta bulunurken, referans yaparken veya budegerleriekullanmakamaciyla erisirken sira endeksi ve endeks adiyla hitabederiz. Yukaridaki sinama amali print()komutuna bakarsaniz, birinci grencinin ismini "[0][adi]" olarak agiriyor.ok elemanli iliskili dizi olusturmanin bir diger yolu, yeri geldiginde byle bir dizi iin yenibir ye ilgili bilgileri eleman endeksi ve degerler iin endeks adi belirterek syle bir kodyazmaktan ibarettir.PHP:

    Bir dizi degiskende ka boyut olacaksa, o kadar iie array() gesi olusturabiliriz. Buna gretekboyutlu bir dizi degisken sadece bir array() komutu ile ve sadece degerler verilerekolusturulabilir. Diyelim ki yukaridaki grenci listemiz sadece grencilerin isimlerindenolusacak.Bu durumda $ogrenciler degiskenine iliskin satiri syle yazabilirdik:$ogrenciler = array ("zbay", "Muharrem", "Hasan", "Sahika");PHP, byle tek boyutlu bir dizinin rnegin birinci elemanini, "$ogrenciler[0]" adiyla bilir.Bylebir tek-boyutlu diziyi olusturmak iin PHP bize baska bir kolaylik da saglar: array() komutunukullanmadan, dogruca dizinin gelerine deger vermemiz mmkndr. Yukaridaki programin

    sadece PHPblmn syle degistirerek kaydedin:PHP:

    Sayfa 9/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    10/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Byle sirayla dizi degisken olusturur veya olusturulmus bir dizi degiskene ek yaparken,degiskeninsira numarasini yazmazsak, PHP bunlari kendisi siralar. Yukaridaki kodun da Browserpenceresine

    "zbay" yazdirmasi gerekir. Mevcut tek-boyutlu bir dizi degiskene ek yaptigimizda, be yenidegerindizinin en altina eklenmesini istiyorsak, sira numarasi yazmamiza gerek yoktur. Mevcutdegerlerdenbirini degistirmek istiyorsak, o degerin sira numarasini yazmamiz gerekir. Bunu denemek iinyukaridaki kodu syle degistirilimPHP:

  • 8/14/2019 PHP iin Trke El Kitab

    11/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    [PAGEBREAK]PHP, $ogrenci adli degiskenin bes ayri degeri oldugunu ve bunlarin "adi," "soyadi," "sinav1"...oldugunu biliyor. Simdi artik istedigimiz noktada bu degiskenin istedigimiz degerine, o

    degerinendeks adini yazarak, agrida bulunabiliriz; bu degeri yeniden verebiliriz.Dizi degiskenleri kullanalimYukaridaki paragrafta "..degiskenin istedigimiz degerine, o degerin endeks adini yazarak,agridabulunabiliriz.." dedigimizi grms olmalisiniz. Dizi veya tekil, degiskenleri olusturmamizinsebebi, tuttuklari degerleri programimizin geregi olan sekilde ve yerde kullanmaktir. Sadecebirdeger tutan degiskenleri rnegin print() komutu ile sik sik kullandik. Yukarida dizi degiskenrneklerinde de bazi degiskenleri ve degerlerini agirdik. Ancak dizi degiskenlerindegerlerindenyararlanabilmek iin baska aralar da vardir.Herseyden nce dizi degiskenlerin byklg, boyutu bizim iin nem tasiyabilir. zelliklebirveritabani dosyasini okutarak olusturacagimiz dizi degiskenin ka elemani ve her bir elemaninkagesi bulundugunu bilmemiz gerekebilir.Bir dizi degiskenin ka elemani bulundugu, o degiskenin count() zelligi sorgulanarakgrenilir.count(), dizideki eleman sayisini verir. Simdi bunu bir rnekle grelim.PHP:

    Bu program Browser penceresine dizimizde 4 eleman bulundugunu bildirecektir. Simdi isleribiraz

    karmasik hale getirelim! Yukaridaki kodun, print() satirinin yerine su satirlari ekleyerek,kaydedelim.PHP:

    Sayfa 11/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    12/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

  • 8/14/2019 PHP iin Trke El Kitab

    13/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    programimiz,dizideki btn degerleri Browser'a gnderecektir.Kimi zaman buradaki rnekte oldugu gibi, dizinin btn elemanlarini bir for dngsyle degil,

    foreach dngsyle bulmak daha kolay olabilir. Kisaca belirtmek gerekirse, foreach dngs,birdizi degiskenin btn elemanlari iin, arzu ettiginiz isi yapar. foreach dngsn yazarkenkomutunka kere icra edilecegini bir sayala tutmak gerekmez; nk dng, ona adini verdiginizdegiskeniniindeki btn degerler bitinceye kadar devam edecektir.PHP: foreach dngs, bir dizi degiskenin adini iinden deger ekilecek kaynak olarak ister; bunu"as"(olarak) kelimesi izler; sonra diziden alinacak her bir degeri geici olarak tutacak degiskeninadiverilir. Buradaki print() komutumuz, bu geici degiskenin tuttugu degeri Browser'agnderecektir.Bu deger ise dngnn her adiminda dizi degiskendeki bir deger yani grencilerin listesiolacaktir.Dizi elemanlarinin farkli zelliklerine iliskin degerlere endeks adi verdigimiz iliskili dizilerdeise eleman degerlerini agirmak foreach dngsnn biraz farkli yazilmasini gerektirir. Perl'easina alanlarin bu dizi trne "hash" dendigini hatirlayacaklardir. PHP'de de Perl'n hash trdegiskenlerinde oldugu gibi, endeks adlarina "anahtar" (key), bu endeksin belirledigi degereise(evet, dogru tahmin ettiniz!) deger (value) denir. Iliskili dizilerden deger almak zere foreachdngs yazilirken, degerin anahtarini ve degerin kendisini iki geici degiskene yazmamizgerekirPHP: Bu kodu alistirmadan nce foreach dngs zerinde kisaca duralim: dng, $ogrencilerdizisiniokumaya basladiginda iinde, benzetme yerinde ise, iki stun, ve bir ok satirlar bulacaktir.Bustunlardan birincisi, ikinci stundaki verinin adidir; foreach, birinci stundaki veriyi alarak$anahtar adli geici degiskenin degeri olarak atayacak; sonra ikinci stuna geecek ve bunualarak$deger adli geici degiskenin degeri yapacaktir. Dng, daha sonra print() komutunu icraedecektir.

    Sayfa 13/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    14/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    print() ise ve geici $anahtar degiskeninin degerini, ardindan esittir isaretini ve son olarak dageici $deger degiskeninin degerini Browser'a gnderecektir. print() komutunun icrasi bitince,foreach, kendisine verdigimiz $ogrenciler degiskeninde anahtar-deger iftini ele almadigi satirkalip kalmadigina bakacak, ve elemanlarin tm bitinceye kadar bu islemi tekrar edecektir.

    Tabi,sonu anahtar ve degerlerin altalta siralanmasi olacaktir.Bir de bu blmn en basinda ele aldigimiz ok elemanli iliskili diziler vardi. Onlarin iindekidegerleri acaba nasil alabilir ve kullanabiliriz? Tabi yine bir dng ile. Fakat bu kez,dng-iinde-dng kullanmak zorundayiz. Byle bir diziyi gzmzde canlandirirsak, belkineden ikidngye ihtiya oldugununu daha iyi grebiliriz. Gzmzn nne bir tablo getirelim:dizinin herbir elemani (bizim grenimizde grenciler9 bir satirda yer almis olsun; stunlar olarak da buelemana ait degerler yer aliyor. Stun basligi ise, bu degerin endeksi olan anahtarPHP:

    Kisaca irdelersek, bu kodda foreach dngsnn nce ok-boyutlu degiskenimizin bir satirini

    iindeki btn anahtar+deger eftleri ile ele alip, tmn $ogrenci adli degiskene geiciolarakyerlestirdigini gryoruz. Bu foreach dngsnn ilk isi yeni bir foreach dngs baslatmakoluyor.Yeni foreach ise sazi eline alir almaz, nce, kendisi ok geli bir degisken olan (nk iindebirgrenciye ait, tm degiskenler ve onlarin endeks adlari var) $ogrenci degiskeninin iindekianahtarve deger iftlerini tek-tek, $anahtar ve $deger degiskenlerine yerlestiriyor; sonra print()komutuile, aralarina esittir isareti koyarak bu degiskenlerin degerlerini Browser penceresinegnderiyor.

    Bu dng biter bitmez, ilk foreach yaptiracagi islere kaldigi yerden devam ediyor; ve ekranabiryeni satir komutu gnderierek, basa dnyor; bu kez ok boyutlu dizi degiskenin yeni birelemanageiyor. Taa ki, dizinin btn elemanlari ve elemanlarin btn geleri bitinceye kadar.Bu noktada bir uyari: Gerek programda bir dizinin elemanlarina ilk ulastigimizda, elemaniniindedeger bulunup bulunmadigini anlamak yerinde olur. Bunu is_array() fonksiyonu ileyapabiliriz. Bufonksiyon, dizinin iinde deger varsa, True/Dogru, yoksa False/Yanlis karsiligini verecektir.Buradaki rnekte, ilk foreach satirindan hemen sonra:is_array( $ogrenci )satirini koyarak, dizinin o anda okunan elemanin iinde deger bulunup bulunmadigini

    Sayfa 14/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    15/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    anlayabiliriz.[PAGEBREAK]Dizi Degiskenlerin DzenlenmesiDizi degiskenlerin daha verimli sekilde kullanilmasi iin PHP bize bir takim aralar saglar.Bunlarla dizi degiskenleri birlestirebiliriz; iinden kesit alabiliriz, siralayabiliriz veya bazielemanlarini silebiliriz. Simdi kisaca bu islemleri ele alalim: Dizileri birlestirme: array_merge()Iki veya daha fazla dizinin btn elemanlarini birlestirerek, ortaya yeni bir dizi ikartir.rnek:PHP:

    Bu kod ile olusturulan $yeni_dizi isimli dizi degiskenin hangi elemanlara sahip oldugunu,syle birkodla grebilirsiniz:PHP:

    foreach ( $yeni_dizi as $yeni_eleman ) { print (" $yeni_eleman
    "); }Ikinci dizinin btn elemanlari, birinci dizinin elemanlarinin arkasina eklenmis olmali.array_merge() islemi, ok-boyutlu iliskili dizilere de uygulanabilir; PHP iki dizidekiuyumlu-uyumsuz, yani birinde olan digerinde olmayan btn anahtar+deger iftlerini yenidizide deolustur. (array_merge() isleminden sonra birlestirilen dizilerin degismeden kaldigina dikkatedin.) Dizilere degisken ekleme: array_push()Bir diziye yeni degiskenler eklemek iin, array_push() fonksiyonuna mevcut dizinin adini veyenidegerleri yazariz. rnek:$birinci_dizi = array ( "zbay" , "Muharrem" , "Hasan" , "Sahika" );$yeni = array_push ($birinci_dizi, "Altun" , "Ta" , "Civelek" , "Tabak" );Burada $yeni adli degisken sadece $birinci_dizi adli dizinin yeni eleman sayisini tutar.array_push(), kendisine adini verdigimiz dizinin ierigini degistirir. Yukaridaki rnekte iineyeni degerler yazilan dizinin elemanlarini grntlemek iin syle bir kod yazabiliriz:PHP:

  • 8/14/2019 PHP iin Trke El Kitab

    16/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    foreach ( $birinci_dizi as $ogrenci ) { print ("$ogrenci
    "); } ?> Dizinin ilk elemanini silme: array_shift()Bir dizi-degiskenin ilk elemanini tmyle silmek iin array_shift() fonksiyonunu kullaniriz.Bufonksiyona sadece birinci elemani silinecek dizinin adini vermek yeter.rnek:$birinci_dizi = array ( "zbay" , "Muharrem" , "Hasan" , "Sahika" );$silinen = array_shift ($birinci_dizi);array_shift(), adini verdiginiz dizinin ierigini degistirir; buradaki rnekte, $silinen adlidegisken dizinin silinen birinci elemanin degerini tutar.

    Diziden kesit alma: array_slice()Bir dizi-degiskenin btn elemanlari yerine bir kesitini kullanmak istiyorsak, bunuarray_slice()fonksiyonu ile yapabiliriz. Bu fonksiyona kesit alinacak dizinin adi, kesitin basladigi yer vekaadet degisken alinacagi argman olarak verilir.rnek$birinci_dizi = array ( "zbay" , "Muharrem" , "Hasan" , "Sahika", "Altun" , "Ta" , "Civelek",

    "Tabak");$kesit = array_slice ($birinci_dizi , 3, 4);Burada, PHP'ye $kesit adli yeni dizi degiskene, $birinci_dizi adli dizinin 3'nc degerindenitibaren (3 dahil) drt degeri yerlestirmesini bildiriyoruz. array_slice(), adini verdigimizdegiskenin ierigine dokunmaz; yeni dizi degisken olusturulur. Dizileri siralama: sort() ve rsort()Bir dizinin iindeki degerleri alfabetik veya kkten byge dogru siralamak iin sort()fonksiyonunu kullaniriz.rnek:$birinci_dizi = array ( "zbay" , "Muharrem" , "Hasan" , "Sahika", "Altun" , "Ta" , "Civelek","Tabak");sort ($birinci_dizi);PHP, dizideki btn degerleri A'dan Z'ye siraya sokacaktir. sort() fonksiyonu dizinin ieginidegistirir. Bir diziyi Z'den A'ya veya bykten kge dogru siralamak iin de rsort()fonksiyonunukullanabilirsiniz. (PHP4.0 Trke karakterleri tanimiyor.) Bir noktada dikkatli olmak gerekir:bufonksiyonu iliskili (degerlerin anahtari olarak endeks adi bulunan) dizide kullanirsaniz, PHP,anahtar degerlerini (endeks adlarini) atar, yerine 0'dan itibaren rakam koyar. Bunu nlemekiin,

    iliskili dizileri asort() veya ksort() fonksiyonu ile siralamak gerekir. Iliskili dizileri siralama: asort() ve ksort()

    Sayfa 16/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    17/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Iliskili dizilerin diger dizi degiskenlere gre farki, degerlerinin bir de adi bulunmasidir.Degerlerin adlarina anahtar denir. Bir iliskili diziyi degerlerine gre siralamak iin asort()fonksiyonu kullanilir.

    rnek:$birinci_dizi = array ( ogr_01=>"zbay", ogr_02=>"Muharrem" , ogr_013>"Hasan" ,ogr_04=>"Sahika");asort ($birinci_dizi);PHP, bu diziyi degerler itibariyle alfabetik siraya sokacaktir. Eger siranin degere gre degil dedegerlerin anahtarina (burada ogr_01, ogr_02 olan kelimeler) gre yapilmasini istiyorsak,ksort()fonksiyonunu kullaniriz.rnek:$birinci_dizi = array ( ogr_01=>"zbay", ogr_02=>"Muharrem" , ogr_013>"Hasan" ,

    ogr_04=>"Sahika");ksort ($birinci_dizi);PHP, simdi bu diziyi anahtarlara gre alfabetik siraya sokacaktir.[PAGEBREAK]Metin Dzenleme ve Dzenli IfadelerPHP: printf() ve sprintf()Bu fonksiyonlari bir degiskeni biimlendirmekte kullaniriz. Birincisinin elde ettigi sonuziyaretinin Browser penceresine gnderilir; ikincisin elde ettigi sonu ise deger olarak dner.nce bu fonksiyonlarla kullanabilecegimiz biim parametrelerini siralayalim:% Yzde isareti. Yaninda biim parametresi gerekmez.b Degisken tamsayi olarak islem grr ve ikili sayi olarak dner.

    c Degisken tamsayi olarak islem grr ve ASCII degerinin karsiligi olan karakter olarakdner.d Degisken tamsayi olarak islem grr ve ondalik sayi olarak dner.f Degisken kesirli sayi olarak islem grr ve kesirli sayi olarak dner.

    Sayfa 17/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    18/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    o Degisken tamsayi olarak islem grr ve sekiz-tabanli (octal) sayi olarak dner.s Degisken alfanmerik olarak islem grr ve alfanmerik olarak dner.x Degisken tamsayi olarak islem grr ve 16 tabanli (hexadecimal) sayi olarak dner.(Harfler,

    kk harf olur).X Degisken tamsayi olarak islem grr ve 16 tabanli (hexadecimal) sayi olarak dner.(Harfler,byk harf olur).Her iki fonksiyonun da kullanilis biimi aynidir:printf( "biim" , $degisken1, $degisken2, ... "metin" );Burada "biim" yerine yukaridaki biim parametlerini yazariz. Biim parametrelerinin nneyzdeisareti konur; en fazla bes belirleyici zellik alabilir. Yukaridaki tr belirten biimlendirmeparametlerine ek olarak diger zellikler syle siralanir:

    Doldurma karakteri: tek tirnak ve onu izleyen bir karakterden olusur.Hizalama: Eksi isaretinin varaligi yazinin sola, yoklugu ise saga hizalanma anlamina gelir.En az-en ok uzunluk: Sayi-nokta-sayi (rnegin 40.40 gibi) yazilir; birinci sayi azam, ikincisayiasgar uzunlugu belirtir.Bu zellige bir rnek verelim.Bir degiskenin degerinin sonuna yanyana yeteri kadar noktakonarakuzunlugunun 40 karaktere ikartilmasini su deyimle saglariz:$degisken = " Iyilik zerine " ;printf( "%'.-40.40s" , $degisken);Burada "%'.-40.40s" seklindeki biim komutu, Browser penceresinde su grnty olusturur:"Iyilik zerine.........................."Burada "Iyilik zerine" degeri 14 karakter oldugu iin, sonuna 26 adet nokta eklenmis vebtndeger sola hizalanmis olacaktir. Su komut ise iki degiskenin degerini ve verecegimiz bir metniaynisatira yazdiracaktir:PHP:

  • 8/14/2019 PHP iin Trke El Kitab

    19/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    alfanmerikolarak muamele grmesini sagliyor. Biim komutlarinin arasinda bosluk bulunmamasi, aitolduklaridegisken degerlerinin de aralarina bosluk konmamasina sebep oluyor. nc degiskenin

    etkisini,kagit zerinde gremiyoruz; ancak bu Browser penceresinde bundan sonra gelecek unsurlarinbir satirasagi kaymasini saglayacaktir.Drdnc biim zelligi, ondalik sayilarin virglden (veya nokdtadan) sonra ondalikblmnn kahane olacagini belirler. Bunu da bir rnekle grelim:PHP: Bu biimlendirme komutu da Browser penceresine su yaziyi yazdirir:IKTI: Degeri (ABD) $124.00[PAGEBREAK]str_replace ()str_replace("

  • 8/14/2019 PHP iin Trke El Kitab

    20/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Eslestirme deyimleri ve isaretlerPHP'nin karakter ve siralanis eslemede kullanilan dzenli ifade komutlarini kisaca ele alalim;sonra bunlari kullanmamiza imkan veren fonksiyonlari grelim.

    ^hakk"hakk" ile baslayan btn kelimeleri bulur.edilemez$Bu deyim ise PHP'ye "edilemez" ile biten btn kelimeleri bulur^hakki$PHP, basinda ^ isareti, sonunda $ isareti bulunan kararter siralanisini, aynen arar; yani budeyim,birinci rnekteki cmleyi de bulamaz.HakkBu deyim ise her cmleyi de buldurur; nk nde de bu drt karakter bu siralanislamevcuttur.PHP'nin Dzenli Ifadeleri, btn rakam ve harfleri eslestirebilir. Fakat sorun, zelkarakterlerdeikar. Szgelimi, sekme isareti, satir sonlarinda yeni-satir/satirbasi isareti, gibi zelkarakterleri, ancak nlerine Escape isareti olan ters bl isaretini koyarak buluruz.Dzenli Ifadelerde zel Karakterler[\b] Geri (Backspace) karakterini bulur.\b Belirtilen karakterle sinirlanan kelimeyi bulur: k\b, "hak mcadelesi" ifadesindeki birincik'yibulur; nk bu harf, bir kelime sinirlayicidir.\B Belirtilen karakterle sinirlanmayan kelime yoksa, baslayani bulur: k\Bi, " kisi"ifadesindeki'ki'yi bulur.\cX X yerine yazacagimiz kontrol karakterini bulur. rnegin, \cA, Ctrl+A'yi, \cZ iseCtrl+Z'yibulur.\d 0'dan 9'ya kadar bir rakami bulur: IE\d, her ikisi de herhangi bir rakamla biten "IE5" ve"IE4"degerlerini ikisini de bulur,\D Herhangi bir ondalik isaretini bulur.\f Form-feed (kagit ikart) karakterini bulur.

    \n Newline (yeni satir) karakterini bulur.\r Return (satirbasi) karakterini bulur.\s Bosluk (space) bulur.\S Yatay ve dsey sekme, kagit-ikart, yeni satir, satirbasi ve bosluk disindaki herhangi birkarakteri bulur.\t Yatay sekme (Tab) karakterini bulur.\v Dsey sekme karakterini bulur.\w Herhangi bir harf, rakam veya alt-izgiyi bulur.\W Harf, rakam ve alt-izgi disindaki karakteri bulur.\xHex Verilen 16 tabanli (Hexadecimal) sayiya uygun Escape karakterini bulur. rnegin,

    \n25, %isaretini bulur.

    Bu arada noktalama isaretlerini arattirirken, nlerine ters bl isareti koymak gerekir. Tersbmisaretini de yine nne ters bl isareti koyarak (\\) arttirabilirsiniz.

    Sayfa 20/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    21/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Karakter GruplariPHP'nin Dzenli Ifadeleri'nde kolaylik saglayan ve mesela ziyaretinin bir Form'da birINPUTetiketine verdigi yanitilarin iinde olmamasi veya olmamasi gereken karakterleri bulmamiza

    imkanveren karakter gruplari olusturma yntemini de kullanabiliriz. Szgelimi btn sesli hafleriaratmak iin syle bir karakter grubu olusturabiliriz:[OoUuAaOoEeiIiI]Karakter gruplarini kseli parantez iinde yazariz. Bu deyimle, PHP, iinde herhangi bir sesliharfbulunan btn degerleri eslestirecektir. Bu yntemden yararlanarak, su gruplari kullanabiliriz:[a-z] Herhangi bir kk harfi bulur.[A-Z] Herhangi bir byk harfi bulur.[a-zA-Z] Herhangi bir byk veya byk harfi bulur.

    [0-9] Herhangi bir rakami bulur.[0-9\.\-] Herhangi bir rakami, noktayi veya kesme izgisini bulur.[ \f\r\t\n] Herhangi bir Form-feed (kagit ikart), Newline (yeni satir), Return (satirbasi)karakterini veya boslugu (space) bulur.Szgelimi, bir alfanmerik deger kmesinde b3, u2, n9 gibi birincisi kk harf, ikincisirakamolan iki karakterlik dizileri bulmak istiyorsak, arama grubunu syle kurariz:^[a-z][0-9]$Bu deyim PHP'ye, a'da z'ye kk harfle baslayan, (^isareti aranan unsurun degerin basindaolmasigerektigini sylyor) ve sonunda 0'dan 9'a bir rakam bulunan kelimeleri bulmasinisyleyecektir.PHP, bu kelimenin sadece iki harfli olmasina dikkat edecektir; nk grubumuzun bir basi vebir desonu belirlendigine gre, karakterli degerlerin bulunmasi imkani yoktur.^ isareti kseli parantez iinde grup deyimi olustururken kullanilirsa, bu olumsuzluk anlamitasir.Szgelimi, iki rakamli ancak birinci karakteri rakam olmayan fakat ikinci karakteri rakamolandegerlerin bulunmasi iin su deyim gerekir:^[^0-9][0-9]$Burada en bastaki ^isareti "basinda" demektir; ancak hemen arkasindan gelen grupta "rakamolmayan"demis oluyoruz; ikinci grup ve sonundaki $ isareti ile "rakamla biten" anlamina geliyor.Deyimdesadece bas ve sonu gsteren iki eslestirme unsuru bulunduguna gre bu deyim, "basindarakamolmayan, sonunda rakam olan iki karakterli degerleri" bulmaya yarayacaktir. Bu deyim szgelimi13' bulmayacak, fakat u2'yi bulacaktir. Bu yntemle su gruplari yapabiliriz:[^a-z] Kk harf olmayan herhangi bir harfi bulur.[^A-Z] Byk harf olmayan herhangi bir harfi bulur.[^\\\/\^] \ , / veya disinda herhangi bir karakteri bulur.[^\"\'] ift ve tek tirnak disinda herhangi bir karakteri bulur.[PAGEBREAK]

    Sayfa 21/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    22/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Grup olusturmada kullandigimiz zel karakterler de vardir. rnegin nokta isareti (.), yeni satirbaslangici olmayan herhangi bir karakter anlamina gelir. Dolayisiyla,

    ^.0$deyimi yeni satirla baslamayan ve sifir ile biten herhangi iki karakterli degeri bulacaktir.Karakter eslestirmede tekrar sayisi da bir zellik olarak kullanilabilir. Tekrar sayisi belirtmekiin ssl parantez ({}) kullaniriz.rnekler:^a{4}$ Iinde sadece drt adet kk a harfi bulunan kelimeleri se: aaaa.^a{2,4}$ Iinde sadece iki veya drt adet kk a harfi bulunan kelimeleri se: aa, aaa,aaaagibi^a{2, } Iki veya daha fazla kk a harfi bulunan kelimeleri se: haar, haaar, haaaar gibi. Bu

    deyim "har" kelimesini semez.\t{2} Ardarda iki sekme isaretini bul.{2} Herhangi ift karakteri bul: aa, &&, == gibi^\-{0,1}[0-9]{1,}$ Negatif veya pozitif herhangi bir tam sayiyi bul^[0-9]{1,}$ Pozitif herhangi bir tam sayiyi bulBu tr deyim olusturma islemleri giderek karmasiklasabilir. rnegin:^\-{0,1}[0-9]{0, }\.{0,1}[0-9]{0, }$Bu karmasik deyim aslinda sadece "Negatif veya pozitif bir ondalik (double) degeri bul,"anlaminageliyor. Kisaca irdelersek, aranan degerin sifir veya bir kere tekrarlanan bir kesme izgisiylebaslayabilecegini ("Sifir veya bir kere" demek, olsa da olur, olmasa da anlamina geliyor!)bunusifir veya daha fazla kere tekrarlanan bir rakamin izleyebilecegini, onu da sifir veya bir keretekrarlanan bir nokta isareti ile sonunda sifir veya daha fazla kere tekrarlanan herhangi birrakamin izleyebilecegini sylemis oluyoruz.PHP bu tr karmasik ifadelerin hatasiz yazilmasini saglayan kisayollara sahiptir. Bunlarisiralayalim:? {0,1} anlamina gelir. Kendisinden nce yer alan unsurun en az sifir en ok bir kere tekraredilmesi gerektigini (olmayabilecegini ama olursa en fazla bir kere olabilecegini) belirtir.* {0, } anlamina gelir. Kendisinden nce yer alan unsurun sifir veya daha fazla kere tekraredilmesi gerektigini (tmyle opsiyonel oldugunu) belirtir.+ {1, } anlamina gelir. Kendisinden nce yer alan unsurun en az bir veya daha ok kere

    tekraredilmesi gerektigini (bulunmasinin zorunlu oldugunu) belirtir.Bu kisa-yollari kullanarak, yukaridaki karmasik ifadeleri basitlestirelim:^[a-zA-Z0-9_]+S En az bir harf veya rakam veya altizgi ieren herhangi bir kelime^[0-9]+S Herhangi bir pozitif tamsayi^\-?[0-9]+S Herhangi bir tamsayi^\-?[0-9]*\.[0-9*$]+S Herhangi bir kesinli (double) sayiBir Dzenli Ifade'nin yazilisinda birden fazla arama-siralanis deyimine yer verebiliriz. Bunuyapmamizi saglayan | isaretidir. rnegin,

    \.com|\.co\.ukifadesi ile, ya ".com" ya da ".co.uk" degerlerinin bulunmasini saglayabiliriz. Burada | isareti"veya" kelimesi gibi dsnebilirsiniz.

    Sayfa 22/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    23/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Dzenli ifadeler yoluyla INPUT etiketinden gelen degerleri incelerken hata yapmak kolaydir.Bununiin kendi ifadelerinizi mutlaka sesitli olasiliklara karsi sinamalisiniz. Bu blmn basindarnek olarak verdigimiz Dzenli Ifade'yi hatirliyor musunuz?

    .+@.+\\..+$rnegin bu ifade, ziyaretinin elektronik posta adresini yazmasi gereken bir INPUT etiketininsagladigi degerin gerekten elektronik adres biimi tasiyip tasimadigini sinar. Bastaki ^ venoktaisaretleri ile arti isareti degerin nnde bosluk olmamasini sagliyor; @ isareti ise degeriniinde@ bulunmasi gerektigine isaret ediyor. Tekrar eden nokta ve arti isaretleri "ne kadar olursaolsunve ne olursa olsun" anlamina geliyor. Bunu izleyen nokta karakterini gsteren (\.) isaretburalarda

    bir de gerekten nokta olmasi gerektigini ve bunu izleyen nokta ve arti tekrar "ne olursa olsun,nekadar olursa olsun" anlamini tasiyor. Baska bir deyisle, aradigimiz degerin "herhangi bir sey"@"herhangi bir sey daha" . "birseyler daha" seklinde oldugunu belirtmis oluyoruz. Ne var kideyimiinde iki nokta veya iki @ isareti olan veya @ isareti ile nokta arasinda bir seybulunmayanveya @ veya noktadan ncesi ya da sonrasi bos olan btn degerleri safdisi etmeyeyetmeyecektir.Dzenli Ifade FonksiyonlariYukarida grendigimiz Dzenli Ifade yazma tekniklerini, PHP'nin bize sagladigi bes

    fonksiyondaparametre olarak kullaniriz. PHP'nin ayrica Perl-tarzi dzenli ifade fonksiyonlari da vardir. Bufonksiyonlardan, ya bize bir boolean (dogru/yanlis) deger dner; ya da fonksiyon istedigimizisiyaparak vardigi sonulari verdigimiz degiskene yazar. Biz, daha sonra bu degere bakarakveyadegiskenin degerlerini kullanarak, PHP programimizin akisini kontrol edebiliriz. Burada elealacagimiz fonksiyonlara iliskin rneklerde, daha nceki blmlerde olusturdugumuz konukdefteriprogrami ile Web ziyaretilerimizin sunucuya gnderecegi bilgileri dogrulamaya vemuhtemel zararlikodlardan ayiklamaya alisacagiz.

    ereg() ve eregi()PHP'nin temel Dzenli Ifade Fonksiyonu, ereg(), arattigimiz karakter siralanisi bulundugutaktirdedogru, bulamadigi taktirde yanlis karsiligi bir deger verir. Fonksiyonu syle yazariz:$bir_degisken = ereg("eslestirilecek_sira" , $kaynak , $yeni_degisken);Fonksiyonun aradigimiz eslestirmeyi yapmasi halinde, buradaki $bir_degisken'in degeritrue/dogru,yapamamasi halinde false/yanlis olacaktir. Eslestirme sirasinin nasil olusturuldugunu yukaridagrdk; bu ifadelerden isimize uygun olani buraya tirnak iinde yazariz. $kaynak,

    eslestirileceksiralamanin iinde aranacagi degeri tutan degiskendir. Fonksiyonun bir diger becerisi, egereslestirilecek siralamayi gruplar halinde verirsek, kaynakta yapacagi eslestirme olursa, bunauygun

    Sayfa 23/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    24/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    degerleri bir dizi degiskene yazabilmesidir; istersek bir parametre olarak bu yeni degiskeninalmasini istedigimiz adi veririz; bylece eslestirme sonucu bulunan degerler kaydedilmis olur.eregi(), aynen ereg() fonksiyonu gibi alisir; sadece eslestirecegi degerlerde

    byk-harf/kk-harf farki gzetmez.Daha nceki blmde olusturdugumuz ve kd_01.php adiyla kaydettigimiz konuk defteriprograminin akisplanini, ziyaretinin Form'a yazdigi ve sunucuda $HTTP_POST_VARS dizi-degiskenindetutulandegiskenlerinden elektronik posta adresi ilge ilgili olani gerekten iinde en az bir @ isaretiileen az bir adet nokta iip iermedigine bakarak sinayabiliriz. Byle bir sinama iin gerekli kodsyle olabilir:PHP:

    Program, bu rnekte $adres degiskeninde kayitli degerin iinde aradigi siralamayi bulursa,eslesendegeri $email adli yeni bir degiskene yazacak ve if sinavinin sonucu dogru olacaktir. Busiralamayauygun bir deger bulunamazsa, if sinavi else deyimine atlayacak ve bir hata mesaji retilerek,buprogram durdurulacaktir.ereg_replace() ve eregi_replace()Grdgmz gibi, ereg() arattigimiz karakter siralanisi bulundugu taktirde dogru, bulamadigitaktirde yanlis karsiligi verdikten sonraduruyor! Oysa kimi zaman arattigimiz ve bulunandegerin

    baska bir degierle degistirilmesi gerekebilir. Bunun iin ereg_replace() ve eregi_replace()fonksiyonlarini kullaniriiz:ereg_replace("eslestirilecek_sira" , yeni_metin , $kaynak);Fonksiyonun aradigimiz eslestirmeyi bulursa, bu degerin yerine verdigimiz yeni metnikoyacaktir;yeni metni bir degiskenin degeri olarak da verebiliriz. Uygulama rnegi iin yine konukdefterirnegine dnelim. Ziyaretilerimiz kimi zaman yanlislikla, kimi zaman pek de iyi niyetsonucuolmadan, kendilerinden bekledigimiz isim, adres ve mesaj yerine sunucu veya baskaziyaretilerinBrowser programlari tarafindan kod gibi algilanacak metinler yazabilirler. Burada sadece butrzararli metinlerin genellikle programlarda bulunmasi gereken karakterler ierdigini

    Sayfa 24/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    25/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    sylemekleyetinelim. Bu tr karakterlerin basinda < ve > isaretleri bulunur! Dolayisiyla, biz deziyaretimizden gelecek verilerin yazildigi degiskenlerin degerlerinde bu isaretleri aratabilirve

    bunlari ii bos bir alfanmerik deger ile degistirebilir; yani silebilir. Zararli olabilecekkodlarin arasinda daha bir ok karakter bulunabilir; ancak Script diliyle yazilmasi gereken bukodlardan < ve > isaretlerini kaldirilmasi kodlari islemez hale getirecegi iin, su asagidakirnek yeterli olabilir:PHP: Burada ereg_replace() fonksiyonu, ziyaretiden gelecek degiskenin degerlerinde < ve >isaretlerini aramakta onlarin yerine ii bos bir metin ("") yazmaktardir.[PAGEBREAK]split()Dzenli Ifade ile alisan bu fonksiyon, verecegimiz eslestirme siralamasini sinirlayici olarakkullanarak, belirtecegimiz degerde buldugu deger paralarini ayirir ve bunlari ayri ayri bir dizidegiskenin elemanlari olarak kaydeder. Bu fonksiyonu syle yazariz:

    $yeni_dizi_degisken = split("eslestirilecek_sira" , $kaynak, sinir_sayisi);Fonksiyon, aradigi siralamayi bulamazsa, false/yanlis sonucunu verir. Burada sinir sayisiolarakverecegimiz rakam, olusturulacak yeni dizi degiskene en fazla ka eleman yazilmasiniistedigimizigsterir. Bu sayiyi vermezsek, PHP yeni dizi degiskenin gerektigi kadar elemana sahipolmasinisaglar. Bir rnek vererek, bu fonksiyonu nasil kullanibilecegimizi grelim:PHP:

  • 8/14/2019 PHP iin Trke El Kitab

    26/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    grntlemekterdir. sql_regcase()Iinde byk harf-kk harf ayrimi olan bir degeri byk harf-kk harf ayrimi olmayanDzenliIfadeler haline evirir. Bu fonksiyon bizden Dzenli Ifade almaz, tersine Dzenli Ifadeolusturur.rnek:PHP:

  • 8/14/2019 PHP iin Trke El Kitab

    27/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    $saat_tarih = getdate() Bu durumda, $saat_tarih dizi degiskeninde sirasiyla su bilgiler yer alir: 32 saniye 57 dakika 6 saat 30 ayin gn sayisi (1-31) 0 haftanin gn sayisi (1-7) 7 ayin sayisi (1-12) 2000 yil 211 yilin kainci gn Sunday gnn adi July ayin adi 964929452 Unix sistemlerinde Epoch biiminde zaman bilgisiPHP'nin tarih ve saat bilgisini biimlendirmede yararlandigimiz date() fonksiyonunu dahasonrametin biimlerdirme blmnde ele alacagiz[PAGEBREAK]Tarih ve Saat DzenlemePHP'nin tarih ve zaman bilgisini kullanmamizi saglayan getdate() fonksiyonunun yani sira,eldeettigimiz bilgileri ok daha esnek biimlendirmemizi saglayan date() fonksiyonu da sikkullanilir.Bu fonksiyon agrildigi yerde bize Unix sisteminin Epoch zaman-tarih damgasini verir. Buverininbiimlendirilmesi iin esitli parametreler vardir. Bu parametreler, gn adlarinin dili vetarihlerin yazilisi bakimindan Web sunucusunun bulundugu bilgisayardaki blgesel ayarlaragresonu verir.date() $tarih date( biimlendirme_parametreleri );Burada biimlendirme_parametleri yerine sunlari yazabilirsiniz:a 12 saat esasina dayanan Anglo-Sakson sistemlerinde gleden nce

    ("am") veya gleden sonra ("pm") isaretinin verilmesini saglar.A Ayni isaretlerin byk harfle yazilmasini saglar.d Iki haneli gn sayisi, tek haneli gnlerin nne sifiir konur: "01" - "31"D haneli gn adi kisatmasi: "Cum"

    F Uzun ay adi: "Ocak"h 12 saatlik sistemde saat: "01" - "12"H 24 saatlik sistemde saat: "00" - "23"g 12 saatlik sistemde tek haneli saatlerin nne sifir konmadan saat: "1" - "12"G 24 saatlik sistemde tek haneli saatlerin nne sifir konmadan saat: "0" - "23"i Dakika: "00" - "59"j Tek haneli sayilarin nne sifir konmadan gn sayisi "1" - "31"l (kk L harfi) Uzun gn adi: "Cuma"L Artik yil olup olmadigina iliskin Boolean (dogru/yanlis) degisken.

    Artik yil ise 1, degilse 0.m Tek hanelilerin nne sifir konarak ay sayisi: "01" - "12"n Tek hanelilerin nne sifir konmadan ay sayisi: "1" - "12"M Kisaltilmis ay adi: "Sub"s Saniye: "00" - "59"S Ingilizce ('nci anlamina) 2 karakter ek: "th", "nd"t Belirtilen ayin gn sayisi; "28" - "31"w Haftanin gn sayisi: "0" (Pazar veya Pazartesi) - "6" (Cumartesi veya Pazar)

    Sayfa 27/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    28/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Y Drt haneli yil: "2000"y Iki haneli yil "00"z Yilin gn sayisi: "0" - "365"

    rnek:print (date ("l dS of F Y h:i:s A"));Browser penceresine Ingilizce blgesel ayarlar yapilmis bir bilgisayara kurulu Websunucusunda:IKTI: "Sunday 30th of July 2000 07:51:08 AM" yazdirir.print (date ("l, d F Y g:i:s"));Browser penceresine Trke blgesel ayarlar yapilmis bir bilgisayara kurulu Websunucusunda:IKTI: "Pazar, 30 Temmuz 2000 07:51:08" yazdirir.date() ve mktime() fonksiyonlarini birlikte kullanarak gemis veya gelecek tarihleri bulmaimkanide vardir.

    rnek:PHP: PHP'de Program Denetimi

    IF Deyimiif ( kosullar ) {kosullar dogru ise yapilacak islere iliskin komutlar}elseif (diger kosullar) {diger kosullar dogru ise yapilacak islere iliskin komutlar}else {diger her durumda yapilacak islere iliskin komutlar}PHP:

  • 8/14/2019 PHP iin Trke El Kitab

    29/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    echo ("Sitemize girmek iin parola yazmaniz gerekir.
    "); echo ("Ltfen parolayi yazin!
    "); } ?>switch deyimiswitch ( degisken ) {case KOSUL-1 ; Kosul-1 dogru ise yapilacak islere iliskin komutlarbreak;case KOSUL-2 ; Kosul-2 dogru ise yapilacak islere iliskin komutlarbreak;case KOSUL-3 ; Kosul-3 dogru ise yapilacak islere iliskin komutlar

    break;case KOSUL-4 ; Kosul-4 dogru ise yapilacak islere iliskin komutlarbreak;............................................default: diger her durumda yapilacak islere iliskin komutlar}[PAGEBREAK] Switch iin kisa yol

    PHP: Bu kod paracigi, ziyaretinin parola girip girmedigini $parola degiskeninin iinin bos olupolmadigina bakarak anlayacak ve $parola degiskenin ii bos ise (yani soru isaretininsorguladigidurumun dogru olmasi halinde) iki nokta stskte isaretinden nceki metni $uyari degiskenin

    ierigihaline getirecek; $parola degiskeninin ii dolu ise (yani kosul yerine gelmiyorsa, durum yanlisise)iki nokta stste isaretinden sonraki metni $uyari degiskeninin ierigi yapacaktir. Bir sonrakiecho() komutu ise ierigi bu sinav sonucuna gre belirlennen $uyari degiskeninin degeriniBrowserpenceresinde grntleyecektir. While dngswhile (kosul) { Kosul dogru ise yapilacak islere iliskin komutlar }PHP:

    Sayfa 29/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    30/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Do..while dngs do { Kosul dogru ise yapilacak islere iliskin komutlar }

    PHP:

    for dngs for ( $yeni_degisken atama ; kosul ; artis basamasi ) { Kosul dogru ise yapilacak islere iliskin komutlar }PHP: Dngy sona erdirmek iin: breakPHP:

  • 8/14/2019 PHP iin Trke El Kitab

    31/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    print (""); print ("

    Iyileri iyilikleri ile alkislayiniz!

    "); print (""); } ?> Dngy srdrmek iin: continuePHP: Bu durumda PHP, conktinue komutunu grdg anda for dngsnn geri kalan kismini icraetmek yerinebasa dnecek ve dngy yeniden icra etmeye baslayacaktir. Dngnn ilk satirinnda kodparasini,bir sayfa kodunun iine yerlestirir ve nce bu sekliyle, danha sonra $sayac= 1 yazaraksinarsaniz,continue komutunun programi saya degiskeninin degeri 1 oluncaya kadar durdurdugunu amabu siradafor dngsnn devam ettigini greceksiniz. ($sayac degiskeninin degerini, Form yoluylaziyaretiden nasil alacagimizi daha sonra grecegiz.)[PAGEBREAK]FonksiyonlarFonksiyon Tanimlama ve agirmaPHP'de fonksiyonlar function komutu ile olusturulur. Tanimladigimiz fonksiyon, kendisinigreve

    agiracak komuittan, yapacagi islemde kullanmak zere deger alacaksa, bu degerlereverecegimizdegisken isimleri fonksiyon adinin yaninda parantez iinde gsterilir. Fonksiyon birden fazladegerbekleyecekse, bunlarin degisken adlarinin arasina virgl koyariz. Fonksiyona ulastirilandegerlereargman denir. Fonksiyon, kendisine bir deger ulastirilmasini beklemese bile ii bos parantezkoymamiz gerekir. Buna gre PHP'de fonksiyon syle yazilir:function fonksiyonun_adi (argman1, argman2, ... argmanN) { fonksiyonun yapacagi ise iliskin komutlar }

    Fonksiyon adlari, degisken adlari ile ayni kurallara tabidir. Fonksiyon iinden fonksiyonagrilabilir; fonksiyonlarin iinde PHP'nin kendi fonksiyonlari kullanilabilir. Simdi, ilk rnekfonksiyonumuzu yazalim.

    Sayfa 31/32

    Btn haklar sakl d r (c) 2001-2006 Turk-Php.Com

    http://www.turk-php.com/http://www.turk-php.com/
  • 8/14/2019 PHP iin Trke El Kitab

    32/32

    PHP in Trke El Kitab - rnekler ve A klamalarhttp://www.turk-php.com/index.php?action=browseArticle&articleID=476&catID=200

    Yukaridaki rneklerde, PHP'ye, bir Web sayfasi olustururken HTML gesi olacak bazisatirlarinbasina , satir sonlarina
    gibi etiketler koydurdugumuza dikkat etmisolmalisiniz. Bir programda bu isi sik sik yapacaksak, yani metinlerimiz
    ile bitecek,

    bazi basliklarimiz ise sayfamiza HTML'in baslik etiketleri ile gnderilecekse, bu etiketleridefalarca yazmamiz sadece zorluk degil, fakat ayni zamanda yazim hatasini davet eden birdavranirolur. PHP'de kendisine verecegimiz metinleri baslik veya gvde yazisi olarak biimlendirecekfonksiyonlar tanimlayarak, programcilikta daima tehlikeli olan insan unsurunu asgaryeindirebiliriz. Su programi yazdir01.php adiyla kaydederek, Browser'da ain:PHP: Bu programda, yazdirBR(), yazdirH1(), yazdirH3(), yazdirH4(), ve yazdirP() adlariyla altifonksiyon tanimladigimizi gryorsunuz. Bu fonksiyonlarin hepsi kendilerini greve agiransatirdan, kendilerine bir deger verilmesini istiyorlar ve bu degeri $metin adli degiskendetutuyorlar. Fonksiyonlarimiz tm de PHP'nin print() fonksiyonundan yararlaniyor; ancak bufonksiyonun