nedir

kelimeleri okur sansürler.

Kodu:
<?
function censor($message){

$fh = fopen("badwords.txt","r"); //Open the badwords.txt

while($word = fgets($fh,4096)) {
$message = ereg_replace(trim($word)," #*@!",$message);
//replace badwords
}

return $message; //return censored words

}
?>

kaynak: ordan burdan

<?
function check_html($string,$res=""){
if($res==""){
$string=htmlspecialchars ($string);
$string = ereg_replace("
","<br>",$string);
$string = ereg_replace("[b]","<b>",$string);
$string = ereg_replace("[/b]","</b>",$string);
$string = ereg_replace("[i]","<i>",$string);
$string = ereg_replace("[/i]","</i>",$string);
$string = ereg_replace("[u]","<u>",$string);
$string = ereg_replace("[/u]","</u>",$string);
$string = ereg_replace("[codigo]","<font class=codigo>",$string);
$string = ereg_replace("[fincodigo]","</font>",$string);
$string = ereg_replace("[link]","<a href="",$string);
$string = ereg_replace("[sep]","">",$string);
$string = ereg_replace("[/link]","<a>",$string);
return($string);
}else{
$string=htmlspecialchars($string);
return($string);
}
}
?>

kaynak: ordan burdan

Belli bir klasörde bulunan dosyalarımızı listelettirdiğimizde, alfabetik sıraya göre değilde o dosyaların oluşturulma yahut değiştirilme tarihine göre listeleme . Aşağıdaki kod bloğu ıyla alfabetik sıralama yapabiliriz.

Kodu:
<?
$dizi = array(); // yeni boş bir dizi değişkeni mlıyoruz.
$dizin = "D:"; // hangi dizinin dosyaları listelenecek?
$ac = opendir($dizin);

echo("<h2>$dizin Dizinindeki Tüm Dosyalar</h2>");

# bütün dosyaları dizi değişkenine atıyoruz. bu işlemi yaparken,
# bir üst dizini temsil eden "." ".." değerlerini bir if deyimi
# ıyla dizi haricinde tutuyoruz.
while($x=readdir($ac)) {
if ($x != "." && $x != "..") {
$dizi[] = $x;
}
}

sort($dizi); // dosyaları alfabetik sıraya alıyoruz.

echo("<table border=0>");

# dosya listesini basit bir foreach ile ekrana basıyoruz.
foreach($dizi as $x => $y) {
echo("<tr><td><b>$x.<b></td><td>$y</td></tr>");
}

echo("</table><br>");
echo("toplam dosya: ");
echo "<b>".count($dizi)."</b>"; // toplam dosya sayısını basıyoruz.

closedir($ac);
?>

kaynak: ordan burdan

<select name="stu_photo" class="select">
<option> seçiniz</option>
<?
if($dir = @opendir("d:/wwwroot/t-diagno/images/photos")){
while (($file = readdir($dir)) !== false){
if($file != ".." && $file != "."){
$filelist[] = $file;
}
}
closedir($dir);
}
asort($filelist);
while (list ($, $val) = each ($filelist)){
echo = "<option value="" . $val . "">" . $val . "</option>";
}
?>
</select>

Editör Notu: Dızını degıstırmek ıcın koddakı "d:/wwwroot/t-diagno/images/photos" ıfadesını duzenleyebılırsınız.

kaynak: ordan burdan

function dosyalistele($yol) {
$dizinac = opendir($yol);
while ( gettype ($dosya = readdir($dizinac) ) != boolean ) {
if ( is_file("$yol/$dosya") ) {
echo (ucwords($dosya)."<br>");
}
}
closedir ($dizinac);
}

Bu listelenen dosyalari, fonksiyon icerisinde bir <option>…</option> seklinde ya da <a href…> seklinde hazirlayabiliriz ihtiyacimiza gore. elemaninda listeletmek, yahut link olarak kullanmak icin.

Ornek:
Kodu:
<?
dosyalistele("./listelenecek_dizin");
?>

kaynak: ordan burdan

<?
$ = 'misal.jpg';
$derece = 180;
header('Content-type: image/jpeg');
$kaynak = imagecreatefromjpeg($);
$boyle = imagerotate($kaynak, $derece, 0);
imagejpeg($boyle);
?>

kaynak: ordan burdan

$a1=array(1,2,3);
$a2=array(4,5,6);
$a3=array(7,8,9);

$array = array(
$a1,
$a2,
$a3,
);

echo "<pre>";
print_r($array);

echo "
______________MY FUNCTIONS______________
";
$n=transpoze($array);
print_r($n);

echo "
______________ARRAY MAP______________
";
$d=array_map(null,$a1,$a2,$a3);
print_r($d);

echo "</pre>";

/**
* transpozes matrix with 2 dimesion
*
* @param byval array
* @return array transpoze of array
*/
function transpoze($array)
{
$column=count($array);
for ($i=0;$i<$column ;$i++ ) {
$row=count($array[0]);
for ($j=0;$j<$row ;$j++ ) {
$new[$j][$i]=$array[$i][$j];
}

}
return $new;
} // end func

kaynak: ordan burdan

Bu makalemizin konusu ile dinamik olarak grafikler oluşturmak.Ama konuya başlamadan önce grafikler üretirken kullanacağımız kütüphaneyi GD kütüphanesini biraz inceleyelim.

GD kütüphanesi başta ,Perl,Tcl C/C++ olmak üzere birçok programlama dilini destekler.Grafik formatı olarak ise Jpeg(Joint Photographic Experts Group),Png(Portatable Network Graphics) ,Wbmp(Wireless Bitmap) formatlarını destekler.Gif(Graphics Interface Format) formatından ise Lisanslarından dolayı(Gif formatı UNISYS'nin LZW sıkıştırma algoritmasını kullanır. Gif formatında resimler üretebilen programlar LZW Lisansı almak zorundadır) sürüm 1.3'ten itibaren desteğini çekmiştir.Gif yerine daha az yer kaplayan ama animasyon desteği olmayan PNG geçmiştir.GD kütüphanesinin ne olduğunu öğrendiğimize göre kuracağımızı fonksiyonlarını öğrenebiliriz.

Aslında GD kütüphanesi 4.0'dan itibaren ile birlikte gelir.Fakat etkinleştirilmemiştir.Benim ımda kurulu olan 4.3.3 versiyonuyla birlikte GD 2.0.15 gelmektedir.Şimdi eklentilerini kuracağımıza bakalım.

Eklentinin DLL dosyasını e:phpextension('yi E: klasörüne açtığınızı varsayarak) klasörüne kopyalarız.
.ini dosyasını herhangi bir metin editörüyle açıp('unuzun kurulu olduğu dizine bakın) extension_dir satırını bulup önündeki "./" yazısını silip "e://extensions" yazın.
;extension=php_bz2.dll ile başlayan satırı bulup etkinleştireceğimiz eklentinin önündeki ';' işaretini kaldırın.(GD için extension=php_gd2.dll)
Web Sunucunuzu yeniden başlatın
Şimdi GD eklentisi çalışıyor mu bir bakalım.Notepad'i açalım <? Phpinfo(); ?> yazıp sunucu dizinimize test. adıyla kaydedelim.Test. sayfasını açtığımızda yüklü modüllerin arasında GD'yi görüyorsak işlem yla tamamlanmış demektir

oluşturmak için elimizde iki seçenek vardır

Sıfırdan bir grafik üretmek
Varolan bir grafiği şablon olarak kullanıp üzerine eklemeler yapmak
Şimdi 1. seçenek için en basit örneğimiz olan prizma efektini yapalım

<?
$en= 500;//Genişliği Ayarlıyoruz
$boy = 500;//Yüksekliği Ayarlıyoruz
$ = imagecreate($en, $boy);//Resmimizi Oluştur
$yesil = imagecolorAllocate ($, 25, 215, 155);//Yeşil Rengi oluşturuyoruz
$siyah = imagecolorAllocate ($, 0, 0, 0);//Siyah Rengi oluşturuyoruz

imagefill($, 0, 0, $siyah);//Resmimizin Arka Planını boyuyoruz
for ($say=20;$say<=500;$say+=20)
{
imageline($, 0, 0, $boy, $say, $yesil);//Yeşil çizgimizi çiziyoruz
imageline($, 0, 0, $say, $en, $yesil);//Yeşil çizgimizi çiziyoruz
}
Header ("Content-type: image/png");//Üretilecek grafiğin png formatında oluşturmak için önbilgi veriyoruz
imagepng ($);//png formatında grafiği oluşturuyoruz
imagedestroy($);//Oluşturduğumuz resmi hafızadan siliyoruz
?>

Bu basit efekt için kullandığımız fonksiyonlara bir bakalım

imagecreate($en,$boy):Resmimizi oluşturduğumuz değişkenlerden anlayacağınız üzere grafiğimizin yüksekliğini genişliğini belirttik
imagecolorAllocate ($,$kirmizi,$yesil,$mavi):Resmimizde kullanacağımız renkleri ayarlıyoruz.Burda rengimizi ayarlamak için 3 rengin RGB değerlerini kullanarak tonlama yapıyoruz.

imagefill($, x, y, $):Resmimizdeki belirli bir ü boyamak için kullanıyoruz.Burdaki x y boyamaya başlayacağımız ün yerlerini $ ise kullanacağımız rengi belirtir.

imageline($,$x1,$y1,$x2,$y2,$):Resmimize çizdiğimiz çizginin başlangıç($x1,y1),bitiş(x2,y2) rengini mlarız($).

Header("Content-type: image/png"):Resmimizin formatını mlıyoruz.Png yerine yazının başında bahsettiğim grafik türlerinden birini seçebilirsiniz.

imagepng($):Resmimizi tarayıcıda görüntülüyoruz.Diğer formatlar için imagejpeg gibi bir fonksiyon kullanabilirsiniz.Eğer oluşan grafiği kaydetmek isterseniz imagepng($,"resmim.png") gibi bir kod kullanabilirsiniz

imagedestroy($):Resmi ürettikten sonra hafızadan siliyoruz.

üzerine çizgiler çizmeyi öğrendik.Peki düğme hazırlamak için üzerine yazı yazabiliriz.Basit bir örnek olarak üzerinde mutasyon.net yazan bir düğme yapalım

<?
$ = imagecreate(120, 50);
$kirmizi = imageColorAllocate ($, 255, 0, 0);
$beyaz = imageColorAllocate ($, 255, 255, 255);
ImageFill($, 250, 250, $kirmizi);
imagestring($,4,10,15,"mutasyon.net",$beyaz);//Resmimize yazımızı ekliyoruz
Header ("Content-type: image/png");
ImagePng ($);
ImageDestroy($);
?>
Önceki örnekten farklı olarak burada imagestring fonksiyonunu kullandık.Bu fonksiyonu imagestring($,$yazi_boyutu,$x,$y,$) şeklinde kullanırız.

Şimdi 2. Seçeneğimiz olan varolan bir grafiği şablon olarak kullanıp üzerine eklemeler yapmayı öğrenelim.Ama ilk önce kendimize şablon olarak 100×100 pixel boyutlarında bir grafik hazırlayalım png formatında deneme ismiyle kaydedelim.(Eğer herhangi bir işleme ınız yoksa yukardaki örneği kaydedebilirsiniz)

<?
$=imagecreatefrompng("deneme.png");//Deneme.png resmini alıyoruz
$rboy=imagesx($);//Resmimizin boyunu ölçüyoruz
$ren=imagesy($);//Resmimizin enini ölçüyoruz
$siyah=imagecolorallocate($,0,0,0);//Siyah rengi ekliyoruz
imagestring($,5,10,45,'Sychorax',$white);//Resmimize Yazımızı Ekliyoruz
header("Content-type: image/png");//Resmin Png formatında olacağını belirtiyoruz
imagepng($);//Resmi tarayıcıya gönderiyoruz
imagedestroy($);//Resmimizi hafızadan siliyoruz
?>;

Burada farklı olarak 3 tane fonksiyon kullandık.Bunlar

imagecreatefrompng("deneme.png"):Şablonumuzun deneme.png olacağını belirttik.
imagesx($):Kullandığımız resmin boyunu ölçtük.
imagexy($):Kullandığımız resmin enini ölçtük.
GD Kütüphanesi ile ürettiğimiz resimleri img etiketinde mlayıp kullanabiliriz

Örneğin <img src=button.> Gibi bir ifade kullanabiliriz

kaynak: ordan burdan

<?
//php_pdf library desteğini kotrol edecek fonksiyon
function kaynak_ara($aranan) {
if (get_extension_funcs ("$aranan") == true) {
return true;
}
else {
return false;
}
}

if(kaynak_ara(pdf) == false) {
die ("Malesef Sunucunuzda pdf desteği yok..!");
}
//fonksiyona pdf desteğini sorduk
//bu farklı kütüphaneler içinde olabilir
//örnek:
//kaynak_ara(gd);

header( "Content-type: application/pdf" );
$f = fopen("deneme.pdf", "w");
//pdf dosyasını yazma amaçlı aç
$pdf = PDF_open($f);
PDF_set_info_author($pdf, "Savas TURK");
//Yazar ismi
PDF_set_info_title($pdf, "PDF document prova");
//Döküman başlığı
PDF_set_info_creator($pdf, "See Author");
PDF_set_info_subject($pdf, "PDF Denemesi");
//Döküman Konusu
PDF_begin_page($pdf, 595, 842);
//Sayfa boyutları genişlik, yükseklik
PDF_add_outline($pdf, "Item".$data[1]);
PDF_set_font($pdf, "Helvetica-Bold" , 20, winansi);
//Yazı stili
PDF_set_text_rendering($pdf, 0);
PDF_show_xy($pdf, "OMG Selam NASILSIN",50,780);
if (!isset($name)) {
$name = "Test isim";
}
if (!isset($age)) {
$age = "Test soyisim";
}
//eklenecek değişkenler
//bir sayfası ile alınabilir
PDF_show_xy($pdf, "isminiz : $name" .$data[1], 100, 700); //Yazı konumu

PDF_show_xy($pdf, "Soy isminiz : $age" .$data[2], 100, 620);
//buraya benzer satırlar ekleyebilirsiniz

PDF_end_page($pdf);
//sayfa son
PDF_close($pdf);
fclose($f);
//dosyayı kapat

//Dosyayı yeniden şekillendirdik
//Aşşağıdaki ise Sayfaya döküyor.
header("Content-length: " . filesize("deneme.pdf"));
$f = fopen("deneme.pdf", "r");
fpassthru($f);
fclose($f);
?>

kaynak: ordan burdan

<?

// Ilk sayi

$sayi1 = (double)$_REQUEST['sayi1'];

// Matematiksel Islem

$islem = $_REQUEST['islem'];

// Ikinci Sayi

$sayi2 = (double)$_REQUEST['sayi2'];

// Ileriye donuk bir parametre, hesap makinesine islemi yapmasini

// sonucu ekrana yazdirmasini bildiriyor…

$komut = $_REQUEST['komut'];

// Formu,programin kendisi uzerine GET ile gonderiyoruz.

// Formda gizli bir 'komut' alani var degeri 'islemi_uygula'

// Boylece islemi yapmasi gerektigini anliyor,

$ben = $PHP_SELF;

if ($komut == 'islemi_uygula') {

if ($islem == '+') {

$sonuc = (double)($sayi1 + $sayi2);

}

if ($islem == '-') {

$sonuc = (double)($sayi1 - $sayi2);

}

if ($islem == '*') {

$sonuc = (double)($sayi1 * $sayi2);

}

if ($islem == '/') {

if (0 != $sayi2){

$sonuc = (double)($sayi1 / $sayi2);

} else {

echo "<br>Bolunen sayi sifir olamaz!";

}

}

if ($islem == 'kalan') {

$sonuc = (double)($sayi1 % $sayi2);

}

}

?>

<>

<body>

<?

// Sonuc diye bir degisken varsa ekranda goster yoksa bos gec

if (isset($sonuc)) { echo "Sonuc:".$sonuc; }

?>

<BR>

<!– Formu Goster –>

< action="<? echo $_SERVER['PHP_SELF']; ?>" method="GET">

<input type="hidden" name="komut" value="islemi_uygula">

SAYI1:

<input type="text" name="sayi1">

ISLEM:

<SELECT name="islem">

<option value="+" selected="true">+</option>

<option value="-">-</option>

<option value="*">x</option>

<option value="/">/</option>

<option value="kalan">kalan (%)</option>

</select>

SAYI2:

<input type="text" name="sayi2">

<input type="submit" value="Islemi Gerceklestir">

</>

</body>

</>

kaynak: ordan burdan

<?

$i=1;

for ($i=1;$i<10;$i++) {

$j=1;

for ($j=1;$j<10;$j++) {

$t = $k[$j] = $i * $j;

echo "$i X $j = ".$t;

echo "<br>";

if (!($j<9)) {

echo "——-";

echo "<br>";

print "Toplam :". (array_sum($k))."<br>";

echo "——-";

echo "<br>";

}

}

}

?>

kaynak: ordan burdan

Karekter dizisi kullanilarak yaratilmis diziler icin,"indexleri" kullanarak alfabetik olarak siralama yapar,

$EyaletBaskenti = array ("ga" => "Atlanta","il" => "Springfield","ca" => "Sacramento",
"wy" => "Cheyene");
ksort ($EyaletBaskenti);

kodumuzun sonunda dizimiz su sekilde siralanacaktir,

$EyaletBaskenti["ca"]= "Sacramento";
$EyaletBaskenti["ga"]= "Atlanta";
$EyaletBaskenti["il"]= "Springfield";
$EyaletBaskenti["wy"]= "Cheyene";

kaynak: ordan burdan

Bu iki fonksiyonda amac olarak sort () asort () fonksiyonlarina benzerdir.Tek farki dizi elementlerinin iceriklerini alfabenin tersi yonunde siralamalaridir.

$Yonetmen = array ("Orson Welles","Carol Reed","Fritz Lang","Jacques Tourner");
rsort ($Yonetmen);

ayni sekilde kareketer kullanilarak yaratilmis diziler icinde ,

$EyaletBaskenti = array ("ga" => "Atlanta","il" => "Springfield","ca" => "Sacramento",
"wy" => "Cheyene");
arsort ($EyaletBaskenti);

Ciktilari icin ornek vermek istemiyorum herhalde buaraya kadar olan bolumu okuduysaniz anlamissinizdir.

kaynak: ordan burdan

Karekterler ile indexlenmis dizileri elementlerinin iceriklerine gore siralamak icin kullanilir.Sunu sorabilirsiniz sort () fonksiyonuda ayni isi yapiyordu?Cevap icin asagidaki kod orneklerine aciklamalara bakin.

Simdi eyaletler dizimizi ele alalim,

$EyaletBaskenti = array ("ga" => "Atlanta","il" => "Springfield","ca" => "Sacramento",
"wy" => "Cheyene");

Dizimiz boyle bir kodun ardindan dogal olarak asagidaki gibi yaratilacaktir

$EyaletBaskenti["ga"]= "Atlanta";
$EyaletBaskenti["il"]= "Springfield";
$EyaletBaskenti["ca"]= "Sacramento";
$EyaletBaskenti["wy"]= "Cheyene";

eger sort () kullanarak siralamis olsaydik son durum soyle olacakti,

$EyaletBaskenti[0]= "Atlanta";
$EyaletBaskenti[1]= "Cheyene";
$EyaletBaskenti[2]= "Sacramento";
$EyaletBaskenti[3]= "Springfield";

diger bir deyisle harfler kullanarak indexledigimiz dizimizde,bu harfler numaralarla degistirilecekti.Bunu engellemek icin mutlaka asort () kullanilmalidir,

asort ($EyaletBaskenti);

komutunu verdikten sonra artik dizimiz asagidaki sekilde siralanacaktir.

$EyaletBaskenti["ga"]= "Atlanta";
$EyaletBaskenti["wy"]= "Cheyene";
$EyaletBaskenti["ca"]= "Sacramento";
$EyaletBaskenti["il"]= "Springfield";

ekranda siralamanin nasil degistgini gormek icin tabii ki list () each () fonksiyonlarini "while" dongusu ile su sekilde kullanabilirsiniz,

while (list($EyaletKisaltmasi,$EyaletIsmi) = each ($EyaletBaskenti))
{
echo "<BR>$EyaletKisaltmasi - $EyaletIsmi";
}

kaynak: ordan burdan

En siralama fonksiyonudur. Dizinin icerisindeki elementleri iceriklerine gore alfabetik olarak siralar.Argument olarak siralanacak dizi isminin verilmesi yeterlidir.

sort (DizininAdi)

Ornek vermek istersek ,

$Yonetmen = array ("Orson Welles","Carol Reed","Fritz Lang","Jacques Tourner");

Yonetmenlerimizin isimlerinin yer aldigi boyle bir diziyi siralamak istersek,

sort ($Yonetmen);

yazmamiz yeterli olacakti.

Bu islemin sonucunu ekranda gormek icin yine list () each () fonksiyonlarini kullanabiliriz.

$Yonetmen[0]= "Orson Welles"
$Yonetmen[1]= "Carol Reed"
$Yonetmen[2]= "Fritz Lang"
$Yonetmen[3]= "Jacques Tourner"

siralamadan sonra ,

$Yonetmen[0]= "Carol Reed"
$Yonetmen[1]= "Fritz Lang"
$Yonetmen[2]= "Jacques Tourner"
$Yonetmen[3]= "Orson Welles"

olacaktir.

kaynak: ordan burdan

Diziye eklenen yeni elemanlarin index degerini bulmak icin next () prev () fonksiyonlarini kullanabilirsiniz.Bu fonksiyonlar dizi boyunca elementler arasinda dolasmanizi saglarlar.(These functions allow you to navigate through arrays,by moving the pointer to the next or previous element in the array).Bu iki fonksiyonda,argument olarak dizi ismini alirlar.Yani hangi fonksiyonun elementleri arasinda gezinmek istiyorsaniz fonksiyonu,o dizinin adini vererek kullanmalisiniz.

Simdi bir onceki konuda yarattigimiz diziyi ele alalim bu fonksiyonlari uygulamali olarak gorelim,

$Yonetmen[4]="Yilmaz Guney";
$Yonetmen[1]="Clint Eastwood";
$Yonetmen[93]="Steven Spielberg";
$Yonetmen[24]="";
$Yonetmen[] = "Mel Gibson";

next () fonksiyonunu, current elementimizin,

Asagida YORUM ile belirtilmis yerlerin tamami yazara aittir dogrulugu konusunda garanti verilemez.Yanlizca konunun daha iyi anlasilmasi icin okuyabilirsiniz.Eger olayi anladiysaniz yaziya kaldiginiz yerden yorumlari okumadan devam ediniz.

—>YORUM : (yani yukaridaki dizide gordugunuz gibi dizinin ilk elementi.Bu ilk element 4 numarasiyla indexlenmis icerigi de Yilmaz Guney.Simdi dizideki islemleri gozunuzun onunde canlandirmak isterseniz bir kaset calar dusunun o sirada calmaya hazir sarki tabii ki kasedin ilk sarkisidir.Eger biz kasedi kullanir birinci sarkiyi dinlersek artik bir sonraki sarki calmaya hazirdir degilmi.Iste burada bahsedilen current element bizim o nda kullanilmaya hazir olan dizi elementimizdir. Guzel bir yaklasim simdi aklima geldigi icin yaziyorum.Biraz olsun sizi current'dan next'ten kurtarip olayi anlatabildiysem ne alaaa anlamadiysaniz lutfen atin )

ne oldugunu kontrol etmeden kullanalim sonuca bakalim,

—>YORUM : (dizi su anda hic kullanilmadigi icin ilk sarkimiz calmaya hazir.Yani dizinin ilk elementi current element.Eger bir dongu icerisinde islem gerceklistiriyor olsaydik dizinin elemanlari birer birer kullaniliyor olsaydi,islemin belirli asamlarinda dizinin hangi index numarali elementi current olacakti veya gercekten o asamada sizin istediginiz element mi kullaniliyor.Tum bu islemler icin dogal olarak iste burada verilen komutlari kullaniyoruz.)

next ($Yonetmen);
$IndexDegeri = ($Yonetmen);
echo ($IndexDegeri);

Bu kucuk programimizin ciktisi "1" olacaktir.Cunku next fonksiyonu cagrilmadan once current elementin index degeri "4" tu.Yani dizinin ilk elemaniydi.Biz next ($Yonetmen); diyerek dizi icerisindeki bir sonraki elementi kullanima hazir hale getirdik.Sonrasinda $IndexDegeri degiskeni icerisnde ($Yonetmen) fonksiyonu ile verdigimiz degerin saklanmasini sagladik.echo ($IndexDegeri) komutu ile de ekrana yazdirdik.

next ($Yonetmen);
next ($Yonetmen);
next ($Yonetmen);
next ($Yonetmen);
$IndexDegeri = ($Yonetmen);
echo ($IndexDegeri);

Gordugunuz gibi fonksiyonu uc defa daha kullandim simdi artik echo komutu ile ekrandan alacagimiz cikti "94" olacaktir.Eger bu index numarali elemnetin icerigini ekranda yazdirmak isteseydik,

$GecerliIcerik = current ($Yonetmen);
echo ($GecerliIcerik);

"Mel Gibson" ciktisini alacaktik.

prev () fonksiyonun kullanimida tamamen yukaridaki ile aynidir.Bu fonksiyonla dizi icerindeki elementler arasinda "geriye" dogru gezinmemizi sagliyoruz.

next ($Yonetmen);
next ($Yonetmen);
next ($Yonetmen);
next ($Yonetmen);
prev ($Yonetmen);
$IndexDegeri = ($Yonetmen);
echo ($IndexDegeri);

Kod grubunun ciktisi "24" olacaktir.Dizi icerisinde once dort element ileriye dogru gidip o elementin "current" olmasini sagladik.Sonra prev ($Yonetmen); satiri ile dizi icerisinde bir element geriye gittik.Diger satirlarda ise iste o elementin "index" degerini ekrana yazdirdik.

Simdi burada bir konuyu belirtelim.Eger dizimiz icerisnde mesela ikinci "next" satirinda dizimizin sonuna gelmis olsaydik ne olacakti.Ondan sonraki kodlar uyarisi verecekmiydi?Bu sorunun cevabi kesinlikle HAYIR'dir.Boyle bir durumda hic bir sey olmayacakti.Kodumuz hic bir vermeyecegi gibi hic bir degerde dondurmeyecekti.Yeterince centilmence degilmi :)

Baska programlama dillerinde bu durumdaki bir mutlak dondurur. ile calismak icin iste size bir baska .Gercekten de mukkemmel bir programlama dili.

prev ($Yonetmen);
next ($Yonetmen);
next ($Yonetmen);
$IndexDegeri = ($Yonetmen);
echo ($IndexDegeri);

Kod grubuda ayni sekilde dondurmeyecektir.Gordugunuz gibi daha dizinin basinda dizideki elementi bir geriye almak istedik.

kaynak: ordan burdan

Dizi icerisinde hangi elementin o anda kullanildigini gormek icin current (), bu elementin index degerini bulmak isterseniz () fonksiyonunu kullanmalisiniz.

Hemen cok kucuk bir kod parcasi uzerinde 'nin yeni ekledigimiz dizi elementlerine hangi indexi olarak verdigini gorelim.

$Yonetmen[4]="Yilmaz Guney";
$Yonetmen[1]="Clint Eastwood";
$Yonetmen[93]="Steven Spielberg";
$Yonetmen[24]="";

Asagidaki iki satir kodu eklersek "$Yonetmen[]" dizisi icin o anki gecerli index degerini gorebiliriz.

$IndexDegeri = ($Yonetmen);
echo ($IndexDegeri);

Boyle bir programin ciktisinda " ()" fonksiyonu "4" degerini dondurecek echo komutuyla ekrana yazilacaktir.

Gordugunuz gibi o anda gecerli olan index degeri dizinin ilk elemanini bize gosterdi.

Eger current () fonksiyonunu kullanmis olsaydik dondurecegi deger "Yilmaz Guney" olacakti.

$GecerliIcerik = current ($Yonetmen);
echo ($GecerliIcerik);

Simdide bir satir daha ekleyelim dizimize bakalim hangi indexi verecek bu yeni eklenen dizi elementine,

$Yonetmen[] = "Mel Gibson";

"Mel Gibson" index degeri "94" olarak dizimiz icerisinde yer alacakti

kaynak: ordan burdan

global deklarasyonunu fonksiyon icinde kullanarak, ulasilmak istenen degiskenin global oldugu soylenebilir.

$degisken = "Ataturk";
function ornek () {
global $degisken;
print $degisken; //Ataturk kelimesi ekrana yazdirilir.
}

Ikinci bir yol : Ulasilmak istenen global degiskene $GLOBALS dizisi yardimiyla ulasilir.

$degisken = "Ataturk";
function () {
$degisken = 1923; //yerel $degisken
print "Global degiskene fonksiyon icinden ulasiyorum $GLOBALS[degisken]";
print "Local degisken degerimiz ise $degisken";

kaynak: ordan burdan

"yazi dizimi"(string) verilerine bir byte dizisi olarak degilde basit veri tipi olarak muamale eder.Bu nedenle onlara substr () substr_replace () gibi fonksiyonlar ile ulasabilir /veya belirli bir kisim veya karekterlerini degistirebilirsiniz.

Substr fonksiyonu 3 argument almaktadir.Bunlardan ilki operasyona ugrayacak string degiskenin adini belirlemek icin kullanilir.Ikinci argument ile indexin baslangici tayin edilir.Eger bu argument pozitif (+) ise saymaya "yazi diziminin" basindan baslanir.Eger bu argument (-) ise o zaman index baslangici olarak "yazi diziminin" sonundan baslanir oradan itibaren sayim yapilir.Ucuncu argument ile "yazi dizimi" icinde aranan keime uzunlugu girilir.

<?

$cumle = "Bir muhendisle iletisim kurmak cogu zaman bir olu ile iletisim kurmaktan daha zordur";

$iletisim = substr ($cumle, 16, 8); //iletisim
$iletisim = substr ($cumle, -23, 8); //Gene iletisim bu sefer tersten

$orta_kisim = substr ($cumle, 25, 11); //cogu zaman

$son_kisim = substr ($cumle,-11); //daha zordur

$son_karekter = substr ($cumle, -1); //r harfi

$son_kelime = substr ($cumle, -6); //zordur

?>

Peki bir ifade icinde belirledigimiz bir yere kadar yapilacak okumlari nasil tayin edecegiz?Bunun icin strpos () onksiyonu kullanilmaktadir.Verilen "yazi dizimi" icerisinde ilk karekterden baslayarak belirlenen karektere kadar olan kismi sayar.

<?
$eposta = 'serkan@turk-.com';
$kullaniciadi = substr ($eposta, 0, strpos (eposta, '@' ));
//$kullaniciadi degiskeni artik serkan degerini saklamaktadir.
?>

substr () fonksiyonu ile istenilen bir reg.exp ifadeside kullanilabilir.Ornek vermek gerekirse,(reg.exp. ile ilgili makaleye ersivden ulasilabilir.)

<?
if (ereg ("aranankelime", substr ($cumle, -15))) {
print "Cumlenin son 15 karekteri icinde aranankelime ile eslesen";
}
?>

kaynak: ordan burdan

'de normal bir degisken su sekilde atanir:

$a = "merhaba";

Degisken degiskenlerin ozelligi degisken adinin dinamik olarak degistirilerek kullanilabilmesidir. Kisaca bir degisken degisken, bir degiskenin degerini alarak onu bir degisken adiymis gibi kullanir.
Ornegin yukaridaki ornekteki 'merhaba' kelimesini dinamik olarak bir degisken adi gibi kullanmak istersek asagidaki sekilde iki isareti kullanarak yazmaliyiz:

$$a = "dunya";

Bu asamada iki tane degiskenimiz var. Bunlardan birincisi '$a' degiskeni (degeri 'merhaba') digeri ise '$merhaba' degiskeni (degeri 'dunya').
Bu yuzden asagidaki iki satir ayni sonucu verir:

# Ornek 1:
echo "$a ${$a}";

# Ornek 2:
echo "$a $merhaba";

# Cikti : merhaba dunya

Degisken degiskenleri array'lerde kullanirken syntax'dan dogabilecek bir kargasayi onlemek icin {} ayrac karakterleri kullanilir. Ornegin $$a[1] dedigimizde $$a degiskeninin 1 indexli elemanini mi yoksa $a[1] degiskenini mi istedigimizi anlayamaz. Boyle sartlarda (veya karismamasi icin diledigimiz zaman) eger su formatlari kullanmalisiniz.

${$a[1]} // Burda acik bir sekilde once $a[1]'in degeri saptanip sonra o isimdeki degiskene ulasilacak

${$a}[1] // Bu sekil kullandigimizda once $a'nin degeri saptanip sonra o isimdeki array'in ilk degiskenine ulasilacak

Su anda bu fonksiyonun geregini anlamasaniz bile ileride yeri geldiginde el altinda bulunmasi bir cok programin yazimini problemin cozumunu kolaylastiracaktir.

Dizideki bir element'e birden fazla index atamak

el kitapcigina(PHP4 Manual) bakildigi zaman bu programlama dilinin "referans" sistemini destekledigi gorulur.Bu tam olarak ne demektir anlatalim :

Bu destek sayesinde teorik olarak,yaratilan bir elemenet dizinin bir baska uyesine sanal olarak referans olarak kullanilabilir.(daha fazla bilgi icin manuelden & operatorune bakiniz)

Bir kod parcasi uzerinde aciklayalim,

<?

//TextIndex ile indexlenmis bir element yaratalim.
$TestDizisi["TextIndex"] = "Bu bir test elementi";

//Simdi yaratacagimiz elemente 0 numerik indexi verelim fakat deger olarak bir once yarattigimiz dizi elementini gecirelim.
$TestDizisi[0] = &$TestDizisi["TextIndex"];

//Simdide elementin indexini 0 ile degistirelim.
$TestDizisi[0] = "ikinci elementi resetliyoruz";

//TextIndex indexine sahip elementin degeride otomatikman degismis oldu :)
print "Test : " . $TestDizisi["TextIndex"] . "
";

//Dizinin butun elemanlari icin icerikleri goster.Bu sayede bu yazilan kodun nasil calisitiginida gormus olacagiz.
print_r($TestDizisi);

?>

Cikti su sekilde olacaktir:

Test:ikinci elementi resetliyoruz
Array ( [TextIndex] => ikinci elementi resetliyoruz [0] => ikinci elementi resetliyoruz )

kaynak: ordan burdan

<?
readfile('http://www..org.tr/');
?>

kaynak: ordan burdan

unset () fonksiyonu ile verilen degisken hafizadan silinir (yok edilir).Bu fonksiyonu bir tek degiskeni silmek icin kullanabileceginiz gibi bir degisken listesi tanimlayip hepsini berberce de silebilirsiniz.

Diziler icin kullanildiginda (dizilerde bir degiskendir sonucta) verilen indeks o indekse ait degeri, yani dizinin o elemetini komple diziden siler.Hafizanin o elemente ayrilmis bolgesi komple temizlenir.

Bir ornekle incelemek istersek :

<?

$evler = array ("Hillsborough" => array("Serkan","Esra"), "Mersin" => array("Annem","Babam","Kardeslerim"),"" => array ("Ablam","Enistem","Bebekleri"));

ekrana_yazdir ($evler);
print "<BR>";
print "Simdi de listeden bazi elementleri siliyorum fonksiyonu gene cagiriyorum…<BR>";
unset ($evler[Hillsborough], $evler[]);
ekrana_yazdir ($evler);

function ekrana_yazdir ($ar) {
foreach ($ar as $YasadigiYer => $Insanlar) {
print "$YasadigiYer: ";
foreach ($Insanlar as $Kisiler) {
print "$Kisiler ";
}
print "
";
}
}
?>

kaynak: ordan burdan

$url = 'http://www.turk-.com/profiles.?Author=Admin&';
$url .= 'AuthorEmail=ebbg@ghex-cuc.pbz&AuthorURL=http://www.turk-.com';

$url_parcalari = parse_url ($url);

$url_parcalari isimli degiskenimiz artik "karekter indeksli" bir dizidir.Bu dizi icerisinde asagidaki veriler saklanmaktadir:

Scheme — "http"

Host — "www.turk-.com"

Path — "/profiles."

Query — "Author=Admin&AuthorEmail=ebbg@ghex-cuc.pbz&AuthorURL=http://www.turk-.com"

Bu fonksiyon ayni zamanda "port","user","pass" "fragment" bilgilerini de dondurur.Tabii ki bu ek bilgiler tamamen bizim URL'mizin tipine baglidir.Zaten yukaridaki gibi basit bir URL yi fonksiyona gecirmis isek bu tip gelismis veriler fonksiyonun sonucunda donmeyecektir.

parse_str fonksiyonu ile "Query" elementi icindeki verileri isliyorum.Bir ornek vermek istersek,

parse_str ($url_parcalari["query"]);

yazdigim zaman scriptimde soyle degiskenler yaratiyorum :

$Author

$AuthorEmail

$AuthorURL

Not: parse_str () fonksiyonu kullanilmasa da olarak "Query" icindeki ifadeleri birer degiskeni sekline getirir.

kaynak: ordan burdan

checkdate () fonksiyonu yardimiyla bu islemi gerceklestirebiliriz.Bu fonksiyon ile AA/GG/YYYY formatindaki verileri kontrol edilmektedir.

<?
list ($ay, $gun, $yil) = explode ('/', $);

if (checkdate ($ay, $gun, $yil)) {
print " yapisal butunluk olarak dogru.";
} else {
print " gecerli degil!";
}
?>

Tartisma : checkdate () fonksiyonu tarihin yapisal dogrulugunu asagidaki kriterlere gore test etmektedir:

Yil degeri 0 ile 32767 arasinda olmalidir.

Ay degeri 1 ile arasinda olmalidir.

Gun degeri verilen ay icin gercek olmalidir.Burada karsimiza "artik yil" icin subatin degerinin nasil hesaplanacagi sorunu cikmaktadir.

Bu problemi kucuk bir uygulama yazarak cozmeye calisalim,

<?

function artik_yil_mi ($yil)

{
return ((($yil%4) == 0 && ($yil%100) !=0) || ($yil%400) == 0);
}

function gecerli_tarih_mi ($)

{

/* tarihi bilesenlerine ayiralim */
list ($ay, $gun, $yil) = explode ('/', $);
$ayin_gunleri = array(31,28,31,30,31,30,31,31,30,31,30,31);

if ($ay <1 || $ay>)
return false;

/*Yil mutlaka 4 digit olmali */
if ((strlen($yil) != 4) || eregi("[^0-9]", $yil))
return false;

/*Artik yil ise Subat ayi 29 cekiyor */
if (artik_yil_mi($yil))
$ayin_gunleri[1] = 29;

if ($gun<1 || $gun>$ayin_gunleri[$ay-1])
return false;

return true;
}
?>

Simdi de yukaridaki kod parcasini aciklamaya calisalim.

Once ilk ornegimizdeki gibi fonksyiona gecirilen degerini bilesenlerine ayiriyoruz.Bu islemin sonucunda donen dizide $ay, $gun , $yil degerleri olusuyor.

Burada ozellikle aciklanmasi gereken bir nokta var. $gun degeri kesin olarak "string"veri tipinde (Duz yazi veri tipi .Sanildigi gibi sayi veri tipinde degil yani).Biz bu duz yazi tipindeki veriyi sayilarla karsilastiriyoruz.iste bu noktada degiskenin tipini olarak sayi veri tipine donusturuyor.Bu islem yapilmiyor olsaydi, donen deger "0" (sifir) olacakti.

Bu degerde tabii ki verilen sinirlarin disinda yanlis bir sonuc olusmasina olacakti.

kaynak: ordan burdan

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

Ornek Kullanim :

<?

$dosya_adi = isset ($argv[0]) ? $argv[0] : "://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 'nin islemesini saglamaktir. 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 :

<?
//$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 olarak dosya sisteminden silinir.
?>

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

kaynak: ordan burdan