nedir

Önce sitenin en üstüne (tabi kaynak dosyasında)

<body>

etiketinden hemen sonra alttaki satırı eklemelisin.

<a id="sayfaustu"></a>

Sitenin kaynak dosyasının en altına tabi

</body>

etiketinin üstüne alttaki satırı ekleyebilirsin.

<p id="page-top"><a href="#sayfaustu" title="Sayfanın başına dön">Yukarı</a></p>

Sonrasında ise stil dosyanın ya da satırlarının içerisine,

#page-top {
position: fixed;
display: block !important;
display: none; /* Hide from IE6 */
bottom: 5px;
right: 10px;
padding: 2px 0 2px 20px;
background: url(images/sayfa-yukari.png) left center no-repeat;
font-size:11px;
}
#page-top a:link, #page-top a:active, #page-top a:visited, #page-top a:hover {text-decoration:none;}

satırlarını ekliyorsun. Burada adı geçen sayfa-yukari.png dosyası, görünmekte olan yukarı ok oluyor.

kaynak: ordan burdan

oval köşelere sahip katmanlar yaratmak çok kolaymış halbuki Yok yok herhangi bir kodu kullanmadan yapacağız

Kullanmanız gereken CSS kodları şöyle;

<style type="text/css">
#metin_banner {width:200px;}
#metin_banner h1, #metin_banner h2 {margin:0 10px; letter-spacing:1px;}
#metin_banner h1 {font-size:2.5em; color:#fff;}
#metin_banner h2 {font-size:2em;color:#06a; border:0;}
#metin_banner h2 {padding-top:0.5em;}
#metin_banner {background: transparent; margin:1em;}
.xtop, .xbottom {display:block; background:transparent; font-size:1px;}
.xb1, .xb2, .xb3, .xb4 {display:block; overflow:hidden;}
.xb1, .xb2, .xb3 {height:1px;}
.xb2, .xb3, .xb4 {background:#ccc; border-left:1px solid #08c; border-right:1px solid #08c;}
.xb1 {margin:0 5px; background:#08c;}
.xb2 {margin:0 3px; border-width:0 2px;}
.xb3 {margin:0 2px;}
.xb4 {height:2px; margin:0 1px;}
.xboxcontent {display:block; background:#ccc; border:0 solid #08c; border-width:0 1px;}
</style>

katman etiketlerimiz ise şunlar;

<div id="metin_banner">
<b class="xtop"><b class="xb1"></b><b class="xb2"></b><b class="xb3"></b><b class="xb4"></b></b>
<div class="xboxcontent">

<h1><a href="">Örnek Başlık</a></h1>
<h2>Örnek bir açıklama</h2>
</div>
<b class="xbottom"><b class="xb4"></b><b class="xb3"></b><b class="xb2"></b><b class="xb1"></b></b>
</div>

kaynak: ordan burdan

ile Md5 şifreleme yapacağımızı ne işe yarayacağı üzerine yorumlarda bulunacağız. Md5 HASHING / FINGERPRINTING algoritmasıdır 128-bit'lik (16-bayt) bir çıktı üretir. Web uygulamalarında kullanıcı parolalarının güvenle saklanabilmesi için en çok kullanılan yöntemlerden biridir.

Md5 fonksiyonu algoritmanın kendi adıyla kullanılmaktadır.

<?
$=12345;
$guvenli_parola = md5($);
echo $guvenli_parola;
?>

bu kodları içeren dosyamız çalıştırıldığında 827ccb0eea8a706c4c34a16891f84e7b çıktısını elde ederiz. Buradaki metin parolamız olan '12345' in kodlanmış halidir.

Yazımızın başında dediğimiz örneğimizde uyguladığımız gibi, Md5 genelde kullanıcı parolalarının güvenle saklanması için kullanılmaktadır. Bunun işleyiş mantığı ise şöyledir:

esnasında= Kullanıcı formu -> formdan gelen md5 ile kodlanır -> kodlanmış veritabanındaki ilgili tablo sütuna eklenir.
Oturum esnasında= = Oturum formu -> formdan gelen md5 ile kodlanır -> kodlanmış veritabanında bulunan kodlanmış ile şılaştırılır -> Eğer aynı ise oturum açtırılır, değilse uyarı v.b.

Md5 Kırılabilir mi?
Md5'i de bulan insanoğludur kırılabilir Bu nedenle ne olursa olsun, hangi olursa olsun parolalarımızı yeterince güçlü tutmalıyız ( rakam, karakter, harf kombinasyonları). Aksi halde yukarıda kullanmış olduğumuz '12345' parolasının Md5 kodlu halini kırmak sadece birkaç saniye sürmektedir.

Alternatifleri

Md5 yerine , crc32() sha1() fonksiyonlarını da sunmaktadır.

kaynak: ordan burdan

'de akışını yönlendirmekte kullandığımız bir diğer unsur, switch deyimidir. Adı anahtar anlamına gelen switch deyimi, verilen bir değişkenin değerinin sıraladığımız koşullardan hangisine uygun olduğunu sınar o koşula ilişkin komutları icra eder. 'nin yaptığı işi bitirdikten sonra switch deyiminin dışına çıkmasını sağlayan, break komutu vardır:

switch ( değişken )
{
case KOŞUL-1 ;
Koşul-1 doğru ise yapılacak işlere ilişkin komutlar
break;

case KOŞUL-2 ;
Koşul-2 doğru ise yapılacak işlere ilişkin komutlar
break;

case KOŞUL-3 ;
Koşul-3 doğru ise yapılacak işlere ilişkin komutlar
break;

case KOŞUL-4 ;
Koşul-4 doğru ise yapılacak işlere ilişkin komutlar
break;
………………….
………………….
default:
diğer her durumda yapılacak işlere ilişkin komutlar
}
switch deyimini yazarken mutlaka break ifadesini kullanmamız gerekmez; switch deyiminin akışı break ile kesilmemişse, ilk şart yerine gelmiş olsa bile diğer şartları da sınamaya devam eder en sondaki default deyimine ulaşarak (default'tan sonra noktalı virgül değil iki nokta üstüste işareti olduğuna dikkat edin), bu bölümdeki komutları icra eder. Ne var ki programcılık mantığına aykırı olabilir: bir değişkenin içeriği verdiğimiz şartlardan birini tutmuşsa, muhtemelen diğer şartları yerine getirmeyecek demektir. Bu durumda diğer koşulların sınanması gereksiz, default işlerin icra edilmesi ise olur. Bu deyimi de bir örnekle görelim:

switch ( $sarki )
{
case "Güneş Doğacak" ;
echo ("Seçtiğiniz şarkının adı: Güneş Doğacak<br>") ;
break;

case "Derdime Derman" ;
echo ("Seçtiğiniz şarkının adı: Derdime Derman<br>") ;
break;

case "Haberi Yok" ;
echo ("Seçtiğiniz şarkının adı: Haberi Yok<br>") ;
break;

case "Sonsuza kadar" ;
echo ("Seçtiğiniz şarkının adı: Sonsuza kadar <br>") ;
break;

default:
echo ("Seçtiğiniz şarkının adı bilinmiyor<br>") ;
}
ımız, bu kodu icra ederken, $sarki adlı değişkenin değerini, buradaki dört isimle şılaştıracaktır. Şarkının adı, "Güneş Doğacak" ise ilk durum gerçekleşmiş olacak; Browser pencerisine şarkının adını yazacak ( muhtemelen bu sözlerini görüntüleyecek!) ikinci adıma break ifadesine geçecektir. break, switch deyiminin sona ermesini sağlar; yoluna, switch deyiminin kapanan süslü parantezinden sonra devam eder. Bu örnekte break ifadesi kullanılmamış olsaydı, , diğer şartları da sınacak boşun azaman kaybedecekti; daha da garibi, en sondaki default komutu da icra edileceği için ımız Browser pencerisine hem seçilen şarkının adını, hem de "Seçtiğiniz şarkının adı bilinmiyor" yazacaktı. Bunu gözönünde tutarak, switch deyimini daima break ile birlikte yazmamız gerekir.

switch için kısa yol

Kimi zaman uzun uzadıya switch deyimi yazmamız gerekmeyebilir; bir değişkenin değerini sadece bir şarta uygunluk açısından sınamamız gerekir. Bunu soru iki nokta üstüste işaretleri (? … :) olarak yazılan işlemci ile yaparız. Diyelim ki, Web sitemizi ziyaret eden kişinin yazıp yazmadığını sıramak istiyoruz:

<?
$uyari = ($ == "" ) ? " yazmanız gerekir" : "Teşekkür ederiz" ;
echo ($uyari);
?>
Bu kod parçacığı, ziyaretçinin girip girmediğini $ değişkeninin içinin boş olup olmadığına bakarak anlayacak $ değişkenin içi boş ise (yani soru işaretinin sorguladığı durumun doğru olması halinde) iki nokta üstüskte işaretinden önceki metni $uyarı değişkenin içeriği haline getirecek; $ değişkeninin içi dolu ise (yani koşul yerine gelmiyorsa, durum yanlış ise) iki nokta üstüste işaretinden sonraki metni $uyarı değişkeninin içeriği yapacaktır. Bir sonraki echo() komutu ise içeriği bu sınav sonucuna göre belirlennen $uyarı değişkeninin değerini Browser penceresinde görüntüleyecektir.

kaynak: ordan burdan

Kelime anlamı eğer olan if deyimi ile ımızı almaya zorlarız. if şartının doğru veya yanlış olması durumunda ne yapacağını da ona biz söyleriz. if deyimi şöyle yazılır:

if ( koşullar )
{
koşullar doğru ise yapılacak işlere ilişkin komutlar
}
elseif (diğer koşullar)
{
diğer koşullar doğru ise yapılacak işlere ilişkin komutlar
}
else
{
diğer her durumda yapılacak işlere ilişkin komutlar
}
, if ifadesinin doğru olması halinde, ifadeye ait ilk süslü parantezin içindeki komutları icra eder; bu şartlar doğru değilse, elseif deyimi ile ileri sürebileceğimiz diğer bir grup şartın doğru olup olmadığını sınayabiliriz. Bu şartlar yerine geliyorsa, , elseif ündeki işleri icra eder. Nihayet diğer her hangi bir durumda icra edilmesini istediğimiz komutları else ünde belirtiriz. , if deyimi doğru değilse, deyime ait süslü parantezin içindeki işleri yapmadan yoluna devam eder; varsa elseif deyiminin şartlarını sınar; elseif ü yok fakat else ü varsa bu bölümdeki işleri icra eder. Deyimde else ü de yoksa, yoluna if deyiminden sonraki ilk adımdan devam eder. Bunu bir örnekle belirtelim:

<?
$sarki = "Güneş Doğacak";
if ( $sarki == "Güneş Doğacak" )
{
echo ("Seçtiğiniz şarkının adı: Güneş Doğacak!");
}
elseif ($sarki == "Beklerim Ben")
{
echo ("Seçtiğiniz şarkının adı: Beklerim Ben!");
}
else
{
echo ("Lütfen bir şarkı seçiniz!");
}
?>
Çoğu zaman if deyimlerini birden fazla koşulu sınayacak şekilde yazarız; bununla birlikte elseif else bölümleri olmadan da yazılabilir:

<?
if ( $ == "" )
{
echo ("Sitemize girmek için yazmanız gerekir.<br>");
echo ("Lütfen parolayı yazın! <br>");
}
?>
Buradaki if deyimi $ değişkeninin boş alfanümerik olması halinde ziyaretçiyi uyarak görevi bitecektir. Ziyaretçi bir yazmışsa, daha sonraki komutlar bu parolanın doğru olup olmadığını sınayabiliriz.

kaynak: ordan burdan

İlişkili dizilerin diğer dizi değişkenlere göre farkı, değerlerinin bir de adı bulunmasıdır. Değerlerin adlarına anahtar denir. Bir ilişkili diziyi değerlerine göre sıralamak için asort() fonksiyonu kullanılır. Örnek:

$birinci_dizi=array(ogr_01=>"Özbay",ogr_02=>"Muharrem",ogr_013>"Hasan",ogr_04=>"Şahika");
asort($birinci_dizi);
, bu diziyi değerler itibariyle alfabetik sıraya sokacaktır. Eğer sıranın değere göre değil de değerlerin anahtarına (burada ogr_01, ogr_02 olan kelimeler) göre yapılmasını istiyorsak, ksort() fonksiyonunu kullanırız. Örnek:

$birinci_dizi = array(ogr_01=>"Özbay",ogr_02=>"Muharrem",ogr_013>"Hasan",ogr_04=>"Şahika");
ksort($birinci_dizi);
, bu diziyi anahtarlara göre alfabetik sıraya sokacaktır.

kaynak: ordan burdan

Bir dizinin içindeki değerleri alfabetik veya küçükten büyüğe doğru sıralamak için sort() fonksiyonunu kullanırız. Örnek:

$birinci_dizi=array("Özbay","Muharrem","Hasan","Şahika","Altun","Taç","Civelek","Tabak");
sort($birinci_dizi);
, dizideki bütün değerleri A'dan Z'ye sıraya sokacaktır. sort() fonksiyonu dizinin içeğini değiştirir. Bir diziyi Z'den A'ya veya büyükten küçüğe doğru sıralamak için de rsort() fonksiyonunu kullanabilirsiniz. (PHP4.0 çe karakterleri mıyor.) Bir noktada dikkatli olmak gerekir: bu fonksiyonu ilişkili (değerlerin anahtarı olarak endeks adı bulunan) dizide kullanırsanız, , anahtar değerlerini (endeks adlarını) atar, yerine 0'dan itibaren rakam koyar. Bunu önlemek için, ilişkili dizileri asort() veya ksort() fonksiyonu ile sıralamak gerekir.

kaynak: ordan burdan

Bir dizi-değişkenin bütün elemanları yerine bir kesitini kullanmak istiyorsak, bunu array_slice() fonksiyonu ile yapabiliriz. Bu fonksiyona kesit alınacak dizinin adı, kesitin başladığı yer kaç değişken alınacağı argüman olarak verilir. Örnek :

$birinci_dizi=array("Özbay","Muharrem","Hasan","Şahika","Altun","Taç","Civelek","Tabak");
$kesit=array_slice($birinci_dizi,3,4);
Burada, 'ye $kesit adlı yeni dizi değişkene, $birinci_dizi adlı dizinin 3'ncü değerinden itibaren (3 dahil) dört değeri yerleştirmesini bildiriyoruz. array_slice(), adını verdiğimiz değişkenin içeriğine dokunmaz; yeni dizi değişken oluşturulur.

kaynak: ordan burdan

Bir dizi-değişkenin ilk elemanını tümüyle silmek için array_shift() fonksiyonunu kullanırız. Bu fonksiyona sadece birinci elemanı silinecek dizinin adını vermek yeter. Örnek:

$birinci_dizi = array("Özbay","Muharrem","Hasan","Şahika");
$silinen = array_shift($birinci_dizi);
array_shift(), adını verdiğiniz dizinin içeriğini değiştirir; buradaki örnekte, $silinen adlı değişken dizinin silinen birinci elemanın değerini tutar.

kaynak: ordan burdan

Bir diziye yeni değişkenler eklemek için, array_push() fonksiyonuna mevcut dizinin adını yeni değerleri yazarız. Örnek:

$birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika" );
$yeni = array_push ($birinci_dizi, "Altun" , "Taç" , "Civelek" , "Tabak" );
Burada $yeni adlı değişken sadece $birinci_dizi adlı dizinin yeni eleman sayısını tutar. array_push(), kendisine adını verdiğimiz dizinin içeriğini değiştirir. Yukarıdaki örnekte içine yeni değerler yazılan dizinin elemanlarını görüntülemek için şöyle bir kod yazabiliriz:

print ("$birinci_dizi adlı dizide $yeni_dizi değişken var<br>");
foreach ( $birinci_dizi as $ogrenci )
{
print ("$ogrenci <br> ");
}

kaynak: ordan burdan

İki veya daha fazla dizinin bütün elemanlarını birleştirerek, ortaya yeni bir dizi çıkartır. Örnek:

$birinci_dizi = array ( "Özbay" , "Muharrem" , "Hasan" , "Şahika" );
$ikinci_dizi = array ( "Altun" , "Taç" , "Civelek" , "Tabak" );
$yeni_dizi = array_merge ( $birinci_dizi, $ikinci_dizi );
Bu kod ile oluşturulan $yeni_dizi isimli dizi değişkenin hangi elemanlara sahip olduğunu, şöyle bir kodla görebilirsiniz:

foreach ( $yeni_dizi as $yeni_eleman )
{
print (" $yeni_eleman <br>");
}
İkinci dizinin bütün elemanları, birinci dizinin elemanlarının arkasına eklenmiş olmalı. array_merge() işlemi, çok-boyutlu ilişkili dizilere de uygulanabilir; iki dizideki uyumlu-uyumsuz, yani birinde olan diğerinde olmayan bütün anahtar+değer çiftlerini yeni dizide de oluştur. (array_merge() işleminden sonra birleştirilen dizilerin değişmeden kaldığına dikkat edin.)

kaynak: ordan burdan

Bir nesne oluşturmak için önce onu mlamamız gerekir. Bunu 'nin class deyimini kullanarak yapabiliriz. Bir nesnenin özellikleri (properties) metodları (methods) vardır. Şu kodu nesneler01. adıyla kaydedin:

<>
<HEAD>
<TITLE>'de Degiskenler</TITLE>
<meta http-equiv="content-type" content="text/; charset=ISO-8859-9">
<meta http-equiv="Content-Type" content="text/; charset=-1254">
</HEAD>
<BODY>
<B>
<H2>
<?
class ogrenci
{
// özellikleri mlayalım
var $adi;
var $soyadi;
var $sinav1;
var $sinav2;
var $not;
// metodları mlayalım

function adi_belirle ($n)
{
$this->adi = $n;
}

function soyadi_belirle ($n)
{
$this->soyadi = $n;
}

function sinav1_belirle ($n)
{
$this->sinav1 = $n;
}

function sinav2_belirle ($n)
{
$this->sinav2 = $n;
}

function not_hesapla()
{
$this->not = ($this->sinav1 + $this->sinav2)/2;
print ($this->adi. " " . $this->soyadi . " için not ortalaması: ". $this->not);
}
}
//Buraya başka kodlar girecek

$ogr1 = new ogrenci();
$ogr1 -> adi_belirle("Şahika");
$ogr1 -> soyadi_belirle("Tabak");
$ogr1 -> sinav1_belirle(7);
$ogr1 -> sinav2_belirle(10);
$ogr1 -> not_hesapla();
?>
</H2>
</B>
</BODY>
</>
Bu programda ogrenci adlı bir nesne mlıyoruz; daha sonra bir değişken adına new komutu ile bu nesnenin bir örneğini oluşturuyoruz. Nesnelerin yeni bir örneği veya kopyasını çıkartmak ifadeleri aslında yaptığımızı tam anlatmıyor. Nesnenin mı bir ; her new komutu ile bu nesnenin özelliklerine metodlarına sahip yeni bir nesne yapmış oluyoruz. Nitekim bu işe insanın dilini dolayan İngilizce bir kelimeyle Instantiation (yeni bir varlığını oluşturma) deniyor. Bu örnekte, $ogr1 adlı değişken gerçekte, ogrenci nesnesinin tam bir örneği: içinde beş değişken altı metod var. Nesneyi bir kere mladıktan sonra ın daha ileri aşamalarında bu istediğimiz kadar örneğini farklı isimler vererek oluşturabiliriz. Şimdi şu satıra dikkat edelim:

$ogr1 = new ogrenci();
$ogr1 -> adi_belirle("Şahika");
Burada $ogr1'in parametrelerine değer yazdırdığımızı görüyorsunuz. Nesnenin metodlarından biri olan adi_belirle fonksiyonuna bir değer veriyoruz: "Şahika"; nesne oluşturulurken yazılmış olan bu fonksiyon ise aldığı değeri, kendi ait olduğu nesnenin bir değişkenine kaydediyor:

function adi_belirle ($n)
{
$this->adi = $n;
}
Bu diğer fonksiyonlarda kullandığımız "$this->" ifadesi, kendisine ulaştırılan değeri bir parametre olarak kullanıyor "$adi" değişkenine yazıyor. "this" (bu) kelimesi o anda nesnenin o anda oluşturulmakta olan örneğine göndermede bulunur. "->" işlemcisini kullanarak, istediğimiz nesnenin istediğimiz metoduna veya parametresine değer gönderebiliriz. Bir nesnenin yeni bir örneğini oluşturduğumuz zaman, bu örneğin bütün parametrelerini sağlamak veya bütün metodlarını kullanmak zorunda değiliz.

kaynak: ordan burdan

Sunucu ın çalışmakta olan dosyasına sunduğu bazı bilgilerin bulunduğu dizi değişken. Bu değişkenin içinde şu unsurlar bulunur:

PHP_SELF Çalışan ının bulunduğu dizin adı
PATH_TRANSLATED Çalışan ının fiziksel yolu

HTTP_GET_VARS Bir 'dan GET metoduyla alınan bilgilerin anahtar=değer çiftleri olarak kaydedildiği dizi değişken

HTTP_POST_VARS Bir 'dan POST metoduyla alınan bilgilerin anahtar=değer çiftleri olarak kaydedildiği dizi değişken

HTTP_USER_AGENT Ziyaretçinin ında kurulu Internet Browser ı

QUERY_STRING ile bilgi alırken GET metodunu kullandığımız takdirde, Browser'ın göndereceği bilgilerin tutulduğu değişken

REMOTE_ADDR Ziyaretçinin ına ISS tarafından atanmış IP

REQUEST_METHOD ile gelen bilgilerin gönderildiği metod: GET veya POST

REQUEST_URI O anda çalışmakta olan dosyasının adı varsa bu ada eklenmiş Query_String

SCRIPT_FILENAME O anda çalışmakta olan ının dosya adı

SCRIPT_URI O anda çalışmakta olan ının tam URL

SERVER_ADDR Sunucunun IP

SERVER_PROTOCOL Sunucunun HTTP protokolünün sürümü

kaynak: ordan burdan

HTTP Sunucu ın çalışmakta olan dosyası için oluşturduğu çevre değişkenlerinin yazılı olduğu dizi değişken. Bu değişkenin içinde şu unsurlar bulunur:

HOSTNAME Sunucunun IP
SHELL Unix sisteminde kullanılan Shell ı
HOSTTYPE Sunucunun adı sürünü
OSTYPE Sunucu'nun işletim sistemi
HOME Çalışan ın kök dizini
PATH Çalışan ın Sunucu'daki yolu

kaynak: ordan burdan

İçinde büyük harf-küçük harf ayrımı olan bir değeri büyük harf-küçük harf ayrımı olmayan Düzenli İfadeler haline çevirir. Bu fonksiyon bizden Düzenli İfade almaz, tersine Düzenli İfade oluşturur. Örnek:

<?
$metin = "";
echo(sql_regcase($metin);
?>
Bu , Browser penceresine şu metni yazdırır:

[Ss][Öö][Zz][Ll][Ee][Rr]

kaynak: ordan burdan

Düzenli İfade ile çalışan bu fonksiyon, vereceğimiz eşleştirme sıralamasını sınırlayıcı olarak kullanarak, belirteceğimiz değerde bulduğu değer parçalarını ayırır bunları ayrı ayrı bir dizi değişkenin elemanları olarak kaydeder. Bu fonksiyonu şöyle yazarız:

$yeni_dizi_değişken = split("eşleştirilecek_sıra",$kaynak,sınır_sayısı);
Fonksiyon, aradığı sıralamayı bulamazsa, false/yanlış sonucunu verir. Burada sınır sayısı olarak vereceğimiz rakam, oluşturulacak yeni dizi değişkene en fazla kaç eleman yazılmasını istediğimizi gösterir. Bu sayıyı vermezsek, yeni dizi değişkenin gerektiği kadar elemana sahip olmasını sağlar. Bir örnek vererek, bu fonksiyonu kullanibileceğimizi görelim:

<?
$metin = "İnsan sözüyle kendini gösterir, davranışlarıyla ruh halini aksettirir.";
$aranan = " ";
$yeni_dizi_değişken = split($aranan, $metin);
foreach ($yeni_dizi_değişken as $eleman)
{
print "$eleman <br>";
}
?>
Bu programda , $metin değişkeninin içerdiği değerde $aranan değişkeninin içerdiği değeri, yani boşluğu, eşleştirilecek unsur olarak kullanacak $metin değişkeninin değerini boşluklarından parçalara ayıracaktır. Ayrılıcak her yeni parça, $yeni_dizi_değişken adlı değişkenin elemanları olarak atanacaktır. ın geri kalan kısmı ise, bu yeni dizinin elemanlarını görüntülemekterdir.

kaynak: ordan burdan

Gördüğümüz gibi, ereg() arattığımız karakter sıralanışı bulunduğu taktirde doğru, bulamadığı taktirde yanlış şılığı verdikten sonraduruyor! Oysa kimi zaman arattığımız bulunan değerin başka bir değierle değiştirilmesi gerekebilir. Bunun için ereg_replace() eregi_replace() fonksiyonlarını kullanırıız:

ereg_replace("eşleştirilecek_sıra",yeni_metin,$kaynak);
Fonksiyonun aradığımız eşleştirmeyi bulursa, bu değerin yerine verdiğimiz yeni metni koyacaktır; yeni metni bir değişkenin değeri olarak da verebiliriz. Uygulama örneği için yine konuk defteri örneğine dönelim. Ziyaretçilerimiz kimi zaman yanlışlıkla, kimi zaman pek de iyi niyet sonucu olmadan, kendilerinden beklediğimiz isim, adres mesaj yerine sunucu veya başka ziyaretçilerin Browser programları tarafından kod gibi lanacak metinler yazabilirler. 'de güvenlik ünde bu konuda daha ayrıntılı bilgi bulacaksınız. Burada sadece bu tür zararlı metinlerin genellikle programlarda bulunması gereken karakterler içerdiğini söylemekle yetinelim. Bu tür karakterlerin başında < > işaretleri bulunur! Dolayısıyla, biz de ziyaretçimizden gelecek verilerin yazıldığı değişkenlerin değerlerinde bu işaretleri aratabilir bunları içi boş bir alfanümerik değer ile değiştirebilir; yani silebilir. Zararlı olabilecek kodların arasında daha bir çok karakter bulunabilir; ancak Script diliyle yazılması gereken bu kodlardan < > işaretlerini kaldırılması kodları işlemez hale getireceği için, şu aşağıdaki örnek yeterli olabilir:

$adi = ereg_replace("<","",$adi);
$adi = ereg_replace(">","",$adi);
$adres = ereg_replace("<","",$adres);
$adres = ereg_replace(">","",$adres);
$mesaj = ereg_replace("<","",$mesaj);
$mesaj = ereg_replace(">","",$mesaj);
Burada ereg_replace() fonksiyonu, ziyaretçiden gelecek üç değişkenin değerlerinde < > işaretlerini aramakta onların yerine içi boş bir metin ("") yazmaktardır.

kaynak: ordan burdan

aynen ereg() fonksiyonu gibi çalışır; sadece eşleştireceği değerlerde büyük-harf/küçük-harf farkı gözetmez.

Daha önceki bölümde oluşturduğumuz kd_01. adıyla kaydettiğimiz konuk defteri ının akış planını, ziyaretçinin 'a yazdığı sunucuda $HTTP_POST_VARS dizi-değişkeninde tutulan değişkenlerinden elektronik posta ilge ilgili olanı gerçekten içinde en az bir @ işareti ile en az bir nokta içip içermediğine bakarak sınayabiliriz. Böyle bir sınama için gerekli kod şöyle olabilir:

if (eregi("^.+@.+\..+$", $adres, $email))
{
//Hiç bir şey yapma
}
else
{
$ = "Elektronik posta adresinizde bir var!<br>";
echo $;
include("kd_hata_halinde.htm");
exit;
}
, bu örnekte $adres değişkeninde kayıtlı değerin içinde aradığı sıralamayı bulursa, eşleşen değeri $email adlı yeni bir değişkene yazacak if sınavının sonucu doğru olacaktır. Bu sıralamaya uygun bir değer bulunamazsa, if sınavı else deyimine atlayacak bir mesajı üretilerek, bu durdurulacaktır. (Burada, yaptığı hayatı düzeltmesi yani geçerli bir elektronik posta vermesini sağlayan yeni sayfanın, include komutu ile ziyaretçiye gönderildiğine dikkat edin.)

kaynak: ordan burdan

'nin Düzenli İfade Fonksiyonu, ereg(), arattığımız karakter sıralanışı bulunduğu taktirde doğru, bulamadığı taktirde yanlış şılığı bir değer verir. Fonksiyonu şöyle yazarız:

$bir_degisken = ereg("eşleştirilecek_sıra",$kaynak,$yeni_değişken);
Fonksiyonun aradığımız eşleştirmeyi yapması halinde, buradaki $bir_degisken'in değeri true/doğru, yapamaması halinde false/yanlış olacaktır. Eşleştirme sırasının oluşturulduğunu yukarıda gördük; bu ifadelerden işimize uygun olanı buraya içinde yazarız. $kaynak, eşleştirilecek sıralamanın içinde aranacağı değeri tutan değişkendir. Fonksiyonun bir diğer becerisi, eğer eşleştirilecek sıralamayı gruplar halinde verirsek, kaynakta yapacağı eşleştirme olursa, buna uygun değerleri bir dizi değişkene yazabilmesidir; istersek bir parametre olarak bu yeni değişkenin almasını istediğimiz adı veririz; böylece eşleştirme sonucu bulunan değerler kaydedilmiş olur.

kaynak: ordan burdan

'nin Düzenli İfadeleri'nde kolaylık sağlayan mesela ziyaretçinin bir 'da bir INPUT etiketine verdiği yanıtıların içinde olmaması veya olmaması gereken karakterleri bulmamıza imkan veren karakter grupları oluşturma yöntemini de kullanabiliriz. Sözgelimi bütün sesli hafleri aratmak için şöyle bir karakter grubu oluşturabiliriz:

[OoUuÖöAaOoEeıIiİ]
Karakter gruplarını köşeli parantez içinde yazarız. Bu deyimle, , içinde herhangi bir sesli harf bulunan bütün değerleri eşleştirecektir. Bu yöntemden yararlanarak, şu grupları kullanabiliriz:

[a-z] Herhangi bir küçük harfi bulur.
[A-Z] Herhangi bir büyük harfi bulur.
[a-zA-Z] Herhangi bir büyük veya büyük harfi bulur.
[0-9] Herhangi bir rakamı bulur.
[0-9.-] Herhangi bir rakamı, noktayı veya kesme çizgisini bulur.
[ f

] Herhangi bir -feed (kağıt çıkart), Newline (yeni satır), Return (satırbaşı) karakterini veya boşluğu (space) bulur.

Sözgelimi, bir alfanümerik değer kümesinde b3, u2, n9 gibi birincisi küçük harf, ikincisi rakam olan iki karakterlik dizileri bulmak istiyorsak, arama grubunu şöyle kurarız:

^[a-z][0-9]$
Bu deyim 'ye, a'da z'ye küçük harfle başlayan, (^işareti aranan unsurun değerin başında olması gerektiğini söylüyor) sonunda 0'dan 9'a bir rakam bulunan kelimeleri bulmasını söyleyecektir. , bu kelimenin sadece iki harfli olmasına dikkat edecektir; çünkü grubumuzun bir başı bir de sonu belirlendiğine göre, üç karakterli değerlerin bulunması imkanı yoktur.

^işareti köşeli parantez içinde grup deyimi oluştururken kullanılırsa, bu olumsuzluk anlamı taşır. Sözgelimi, iki rakamlı ancak birinci karakteri rakam olmayan fakat ikinci karakteri rakam olan değerlerin bulunması için şu deyim gerekir:

^[^0-9][0-9]$
Burada en baştaki ^işareti "başında" demektir; ancak hemen arkasından gelen grupta "rakam olmayan" demiş oluyoruz; ikinci grup sonundaki $ işareti ile "rakamla biten" anlamına geliyor. Deyimde sadece baş sonu gösteren iki eşleştirme unsuru bulunduğuna göre bu deyim, "başında rakam olmayan, sonunda rakam olan iki karakterli değerleri" bulmaya yarayacaktır. Bu deyim söz gelimi 13'ü bulmayacak, fakat u2'yi bulacaktır. Bu yöntemle şu grupları yapabiliriz:

[^a-z] Küçük harf olmayan herhangi bir harfi bulur.
[^A-Z] Büyük harf olmayan herhangi bir harfi bulur.
[^\/^] , / veya ^ dışında herhangi bir karakteri bulur.
[^"'] Çift tek dışında herhangi bir karakteri bulur.
Grup oluşturmada kullandığımız özel karakterler de vardır. Örneğin nokta işareti (.), yeni satır başlangıcı olmayan herhangi bir karakter anlamına gelir. Dolayısıyla,

^.0$
deyimi yeni satırla başlamayan sıfır ile biten herhangi iki karakterli değeri bulacaktır.

'nin kullanılmaya hazır özel Düzenli İfade eşleştirme grupları da vardır:

[[:alpha:]] Herhangi bir harf
[[:digit:]] Herhangi bir rakam
[[:alnum:]] Herhangi bir harf veya rakam
[[:space:]] Herhangi bir boş karakter
[[:upper:]] Herhangi bir büyük harf
[[:lower:]] Herhangi bir küçük harf
[[:punc:]] Herhangi bir noktalama işareti
[[:xdigit:]] Herhangi bir Hexadecimal karakter. [0-9a-fA-F]
Karakter eşleştirmede tekrar sayısı da bir özellik olarak kullanılabilir. Tekrar sayısı belirtmek için süslü parantez ({}) kullanırız. Örnekler:

^a{4}$ İçinde sadece dört küçük a harfi bulunan kelimeleri seç: aaaa.
^a{2,4}$ İçinde sadece iki üç veya dört küçük a harfi bulunan kelimeleri seç: aa, aaa, aaaa gibi
^a{2, } İki veya daha fazla küçük a harfi bulunan kelimeleri seç: haar, haaar, haaaar gibi. Bu deyim "har" kelimesini seçmez.
{2} Ardarda iki sekme işaretini bul
.{2} Herhangi çift karakteri bul: aa, &&, == gibi
^-{0,1}[0-9]{1,}$ Negatif veya pozitif herhangi bir tam sayıyı bul
^[0-9]{1,}$ Pozitif herhangi bir tam sayıyı bul

Bu tür deyim oluşturma işlemleri giderek karmaşıklaşabilir. Örneğin:

^-{0,1}[0-9]{0, }.{0,1}[0-9]{0, }$
Bu karmaşık deyim aslında sadece "Negatif veya pozitif bir ondalık (double) değeri bul," anlamına geliyor. Kısaca irdelersek, aranan degerin sıfır veya bir kere tekrarlanan bir kesme çizgisiyle başlayabileceğini ("Sıfır veya bir kere" demek, olsa da olur, olmasa da anlamına geliyor!) bunu sıfır veya daha fazla kere tekrarlanan bir rakamın izleyebileceğini, onu da sıfır veya bir kere tekrarlanan bir nokta işareti ile sonunda sıfır veya daha fazla kere tekrarlanan herhangi bir rakamın izleyebileceğini söylemiş oluyoruz.

bu tür karmaşık ifadelerin hatasız yazılmasını sağlayan kısayollara sahiptir. Bunları sıralayalım:

? {0,1} anlamına gelir. Kendisinden önce yer alan unsurun en az sıfır en çok bir kere tekrar edilmesi gerektiğini (olmayabileceğini ama olursa en fazla bir kere olabileceğini) belirtir.
* {0, } anlamına gelir. Kendisinden önce yer alan unsurun sıfır veya daha fazla kere tekrar edilmesi gerektiğini (tümüyle opsiyonel olduğunu) belirtir.
+ {1, } anlamına gelir. Kendisinden önce yer alan unsurun en az bir veya daha çok kere tekrar edilmesi gerektiğini (bulunmasının zorunlu olduğunu) belirtir.

Bu kısa-yolları kullanarak, yukarıdaki karmaşık ifadeleri basitleştirelim:

^[a-zA-Z0-9_]+Ş En az bir harf veya rakam veya altçizgi içeren herhangi bir kelime
^[0-9]+Ş Herhangi bir pozitif tamsayı
^-?[0-9]+Ş Herhangi bir tamsayı
^-?[0-9]*.[0-9*$]+Ş Herhangi bir kesinli (double) sayı

Bir Düzenli İfade'nin yazılışında birden fazla arama-sıralanış deyimine yer verebiliriz. Bunu yapmamızı sağlayan | işaretidir. Örneğin,

.com|.co.uk
ifadesi ile, ya ".com" ya da ".co.uk" değerlerinin bulunmasını sağlayabiliriz. Burada | işareti "veya" kelimesi gibi düşünebilirsiniz.

Düzenli ifadeler yoluyla INPUT etiketinden gelen değerleri incelerken yapmak kolaydır. Bunun için kendi ifadelerinizi mutlaka sçeşitli olasılıklara şı sınamalısınız.

^.+@.+\..+$
Örneğin bu ifade, ziyaretçinin elektronik posta adresini yazması gereken bir INPUT etiketinin sağladığı değerin gerçekten elektronik adres biçimi taşıyıp taşımadığını sınar. Baştaki ^ nokta işaretleri ile artı işareti değerin önünde boşluk olmamasını sağlıyor; @ işareti ise değerin içinde @ bulunması gerektiğine işaret ediyor. Tekrar eden nokta artı işaretleri "ne kadar olursa olsun ne olursa olsun" anlamına geliyor. Bunu izleyen nokta karakterini gösteren (.) işaret buralarda bir de gerçekten nokta olması gerektiğini bunu izleyen nokta artı tekrar "ne olursa olsun, ne kadar olursa olsun" anlamını taşıyor. Başka bir deyişle, aradığımız değerin "herhangi bir şey" @ "herhangi bir şey daha" . "birşeyler daha" şeklinde olduğunu belirtmiş oluyoruz. Ne var ki deyimiçinde iki nokta veya iki @ işareti olan veya @ işareti ile nokta arasında bir şey bulunmayan veya @ veya noktadan öncesi ya da sonrası boş olan bütün değerleri safdışı etmeye yetmeyecektir. Sözgelimi bir ziyaretçimiz "@@@@.@@@" yazarsa, bu deyim bu değeri geçerli bir elektronik adres sayacaktır.

programlarımızda ziyaretçilerimizin verdiği değerleri çeşitli bakımlardan sınamak seçmek mümkündür; ancak hiç bir zaman yazılanların doğruluğunu garanti edemeyiz. Fakat özellikle bir metinde bulunmaması gereken işaretlleri 'ye aratabiliriz. Bunu Düzenli İfade Fonksiyonları sağlar.

kaynak: ordan burdan

'nin karakter sıralanış eşlemede kullanılan düzenli ifade komutlarını kısaca ele alalım; sonra bunları kullanmamıza imkan veren fonksiyonları görelim.

^hakk
"hakk" ile başlayan bütün kelimeleri bulur. ^işareti, onu izleyen karakterin sadece alfanümerik değişkenin başında olması gerektiğine işaret eder. Bu deyimle, "Hakkı Öcal bugün buradaydı!" veya "Hakkıdır hakka tapan, milletimin istiklâl!" eşleşebilir; fakat "Anaların hakkı ödenmez!" eşleşmez; çünkü açısından ^işaretinin anlamı, "Başlangıcında 'hakk' karakterlerinin sıralanıyla aynı sıralanıştaki alfanümerik değeri bul!" demektir.

edilemez$
Bu deyim ise 'ye "edilemez" ile biten bütün kelimeleri bulur. Sözgelimi, "Kötümser insanın yükselişinden bahsedilemez" cümlesi bu deyimle bulunabilir; fakat sonunda nokta olduğu için ".. edilemez." diye biten hiç bir cümle bu deyimle eşleşemez.

^hakkı$
, başında ^ işareti, sonunda $ işareti bulunan kararter sıralanışını, aynen arar; yani bu deyim, birinci örnekteki üç cümleyi de bulamaz.

hakk
Bu deyim ise her üç cümleyi de buldurur; çünkü üçünde de bu dört karakter bu sıralanışla mevcuttur. 'nin Düzenli İfadeleri, bütün rakam harfleri eşleştirebilir. Fakat sorun, özel karakterlerde çı. Sözgelimi, sekme işareti, satır sonlarında yeni-satır/satırbaşı işareti, gibi özel karakterleri, ancak önlerine Escape işareti olan ters bölü işaretini koyarak buluruz.

Düzenli İfadelerde Özel Karakterler

[] Geri (Backspace) karakterini bulur.
 Belirtilen karakterle sınırlanan kelimeyi bulur: k, "hak mücadelesi" ifadesindeki birinci k'yı bulur; çünkü bu harf, bir kelime sınırlayıcıdır.
B Belirtilen karakterle sınırlanmayan kelime yoksa, başlayanı bulur: kBi, "üç kişi" ifadesindeki 'ki'yi bulur.
cX X yerine yazacağımız kontrol karakterini bulur. Örneğin, cA, Ctrl+A'yı, cZ ise Ctrl+Z'yi bulur.
d 0'dan 9'ya kadar bir rakamı bulur: IEd, her ikisi de herhangi bir rakamla biten "IE5" "IE4" değerlerini ikisini de bulur,
D Herhangi bir ondalık işaretini bulur.
f -feed (kağıt çıkart) karakterini bulur.

Newline (yeni satır) karakterini bulur.

Return (satırbaşı) karakterini bulur.
s Boşluk (space) bulur.
S Yatay düşey sekme, kağıt-çıkart, yeni satır, satırbaşı boşluk dışındaki herhangi bir karakteri bulur.
Yatay sekme (Tab) karakterini bulur.
v Düşey sekme karakterini bulur.
w Herhangi bir harf, rakam veya alt-çizgiyi bulur.
W Harf, rakam alt-çizgi dışındaki karakteri bulur.
xHex Verilen 16 tabanlı (Hexadecimal) sayıya uygun Escape karakterini bulur. Örneğin,
25, % işaretini bulur.

Bu arada noktalama işaretlerini arattırırken, önlerine ters bölü işareti koymak gerekir. Ters bömü işaretini de yine önüne ters bölü işareti koyarak (\) arttırabilirsiniz.

kaynak: ordan burdan

işaretlerinin, Düzenli İfade işlemlerine ait olduğunu belirtilim. Bu işaretler onların arasına koyduğumuz karakter örnekleri ile, 'nin aradığımız bir metnin karakterlerinin hangi diziliş, sıralanış konumunda olduğuna bakarak, bize o metni bulmasını sağlarız; ya bu metni kullanırız, sileriz veya değiştiririz. Dolayısıyla, Düzenli İfade demek, bir diziliş, sıralanış biçimi demektir. Düzenli İfade oluşturarak, 'ye "İşte buradaki gibi sıralanmış karakterleri bul!" demiş oluruz. Düzenli İfade, 'ye verdiğimiz sıralanışa uygun metnin nerede kaçıncı kez bulunmasını istediğimizi de belirtir. Ayrıca, bu ifade ile, 'nin bulduğu metni (veya metinleri) ne yapmasını istediğimizi de söyleriz.

kaynak: ordan burdan

'nin zaman bilgisini kullanmamızı sağlayan getdate() fonksiyonunun yanı sıra, elde ettiğimiz bilgileri çok daha esnek biçimlendirmemizi sağlayan date() fonksiyonu da sık kullanılır. Bu fonksiyon çağrıldığı yerde bize Unix sisteminin Epoch zaman- damgasını verir. Bu verinin biçimlendirilmesi için çeşitli parametreler vardır. Bu parametreler, gün adlarının dili tarihlerin yazılışı bakımından Web sunucusunun bulunduğu bilgisayardaki bölgesel ayarlara göre sonuç verir.

date() $ date( biçimlendirme_parametreleri );

Burada biçimlendirme_parametleri yerine şunları yazabilirsiniz:

a saat esasına dayanan Anglo-Sakson sistemlerinde öğleden önce ("am") veya öğleden sonra ("pm") işaretinin verilmesini sağlar.
A Aynı işaretlerin büyük harfle yazılmasını sağlar.
d İki haneli gün sayısı, tek haneli günlerin önüne sıfıır konur: "01" - "31"
D Üç haneli gün adı kısatması: "Cum"
F Uzun ay adı: "Ocak"
h saatlik sistemde saat: "01" - ""
H 24 saatlik sistemde saat: "00" - "23"
g saatlik sistemde tek haneli saatlerin önüne sıfır konmadan saat: "1" - ""
G 24 saatlik sistemde tek haneli saatlerin önüne sıfır konmadan saat: "0" - "23"
i Dakika: "00" - "59"
j Tek haneli sayıların önüne sıfır konmadan gün sayısı "1" - "31"
l (küçük L harfi) Uzun gün adı: "Cuma"
L Artık yıl olup olmadığına ilişkin Boolean (doğru/yanlış) değişken. Artık yıl ise 1, değilse 0.
m Tek hanelilerin önüne sıfır konarak ay sayısı: "01" - ""
n Tek hanelilerin önüne sıfır konmadan ay sayısı: "1" - ""
M Kısaltılmış ay adı: "Şub"
s Saniye: "00" - "59"
S İngilizce ('ncı anlamına) 2 karakter ek: "th", "nd"
t Belirtilen ayın gün sayısı; "28" - "31"
w Haftanın gün sayısı: "0" (Pazar veya Pazartesi) - "6" (Cumartesi veya Pazar)
Y Dört haneli yıl: "2000"
y İki haneli yıl "00"
z Yılın gün sayısı: "0" - "365"

Örnek:

print (date ("l dS of F Y h:i:s A"));
Browser penceresine İngilizce bölgesel ayarlar yapılmış bir bilgisayara kurulu Web sunucusunda: "Sunday 30th of July 2000 07:51:08 AM" yazdırır.

print (date ("l, d F Y g:i:s"));
Browser penceresine çe bölgesel ayarlar yapılmış bir bilgisayara kurulu Web sunucusunda: "Pazar, 30 Temmuz 2000 07:51:08" yazdırır.

date() mktime() fonksiyonlarını birlikte kullanarak geçmiş veya gelecek tarihleri bulma imkanı de vardır. Örnek:

$yarin = mktime (0,0,0,date("m") ,date("d")+1,date("Y"));
$gecen_ay = mktime (0,0,0,date("m")-1,date("d"), date("Y"));
$gelecek_lyl = mktime (0,0,0,date("m"), date("d"), date("Y")+1);

kaynak: ordan burdan

Türü sayı olan değişken değerlerini bin-basamakları şeklinde biçimlendirmekte kullanılır. Parametre olarak sayı içeren değişkenin adını, ondalık ün kaç haneli olacağını, ondalık hanesini binler basamaklarını ayırmakta kullanılacak karakteri kabul eder. Örnek:

$degisken = 1234567890.1234567890 ;
echo (number_format($degisken, 4 chr(44) ,"."));
Bu deyimle 1234567890.1234567890 şeklindeki değer, Browser penceresine "1.234.567.890,1235" şeklinde yazdırılacaktır.

kaynak: ordan burdan

Bu fonksiyonları bir değişkeni biçimlendirmekte kullanırız. Birincisinin elde ettiği sonuç ziyaretçinin Browser penceresine gönderilir; ikincisin elde ettiği sonuç ise değer olarak döner. Önce bu fonksiyonlarla kullanabileceğimiz biçim parametrelerini sıralayalım:

% Yüzde işareti. Yanında biçim parametresi gerekmez.
b Değişken tamsayı olarak işlem görür ikili sayı olarak döner.
c Değişken tamsayı olarak işlem görür ASCII değerinin şılığı olan karakter olarak döner.
d Değişken tamsayı olarak işlem görür ondalık sayı olarak döner.
f Değişken kesirli sayı olarak işlem görür kesirli sayı olarak döner.
o Değişken tamsayı olarak işlem görür sekiz-tabanlı (octal) sayı olarak döner.
s Değişken alfanümerik olarak işlem görür alfanümerik olarak döner.
x Değişken tamsayı olarak işlem görür 16 tabanlı (hexadecimal) sayı olarak döner. (Harfler, küçük harf olur).
X Değişken tamsayı olarak işlem görür 16 tabanlı (hexadecimal) sayı olarak döner. (Harfler, büyük harf olur).
Her iki fonksiyonun da kullanılış biçimi aynıdır:

printf( "biçim" , $degisken1, $degisken2, … "metin" );
Burada "biçim" yerine yukarıdaki biçim parametlerini yazarız. Biçim parametrelerinin önüne yüzde işareti konur; en fazla beş belirleyici özellik alabilir. Yukarıdaki tür belirten biçimlendirme parametlerine ek olarak diğer özellikler şöyle sıralanır:

Doldurma karakteri : tek onu izleyen bir karakterden oluşur.

Hizalama : Eksi işaretinin varalığı yazının sola, yokluğu ise sağa hizalanma anlamına gelir.

En az-en çok uzunluk : Sayı-nokta-sayı (örneğin 40.40 gibi) yazılır; birinci sayı azamî, ikinci sayı asgarî uzunluğu belirtir.

Bu üç özelliğe bir örnek verelim.Bir değişkenin değerinin sonuna yanyana yeteri kadar nokta konarak uzunluğunun 40 karaktere çıkartılmasını şu deyimle sağlarız:

$degisken = " İyilik üzerine " ;
printf( "%'.-40.40s" , $degisken);
Burada "%'.-40.40s" şeklindeki biçim komutu, Browser penceresinde şu görüntüyü oluşturur:

"İyilik üzerine…………………….."
Burada "İyilik üzerine" değeri 14 karakter olduğu için, sonuna 26 nokta eklenmiş bütün değer sola hizalanmış olacaktır. Şu komut ise iki değişkenin değerini vereceğimiz bir metni aynı satıra yazdıracaktır:

$degisken1 = " İyilik üzerine " ;
$degisken2 = " İyilik üzerine " ;
$metin = "<br>
" ;
printf("%'.-40.40s%'.2d%s",$degisken1,$degisken2,$metin);
Bu komut Browser penceresinde şu görüntüyü oluşturur:

"İyilik üzerine……………………..86"
Burada eklediğimiz ikinci "%'.2d" şeklineki biçim komutu ile, ikinci değişkenin değeri, en az sıfır en çok iki nokta ile doldurulmak sağa hizalanarak ondalık sayı olarak görüntülenmek üzere biçimlendiriliyor. Üçüncü biçim komutu olan "%s" ise üçüncü değişkenin sadece alfanümerik olarak muamele görmesini sağlıyor. Biçim komutlarının arasında boşluk bulunmaması, ait oldukları değişken değerlerinin de aralarına boşluk konmamasına sebep oluyor. Üçüncü değişkenin etkisini, kağıt üzerinde göremiyoruz; ancak bu Browser penceresinde bundan sonra gelecek unsurların bir satır aşağı kaymasını sağlayacaktır.

Dördüncü biçim özelliği, ondalık sayıların virgülden (veya noktadan) sonra ondalık ünün kaç hane olacağını belirler. Bunu da bir örnekle görelim:

$degisken = " 124 " ;
printf( "Değeri (ABD) $%.2f" , $degisken);
Bu biçimlendirme komutu da Browser penceresine şu yazıyı yazdırır:

Değeri (ABD) $124.00

kaynak: ordan burdan