Temel Alfanümerik Fonksiyonları

PHP'nin metin olarak gördüğü değişkenlere alfanümerik (String) türü değişkenler adını vermiştik. PHP'nin alfanümerik fonksiyonları, bu tür değişkenlerin değerlerinin içinden bir bölümü alma, atma veya değiştirme imkanı sağlar. Programlarımızda sık kullanacağımız bir kaç fonksiyonu ele alalım. Bu fonksiyonların tam listesini bu kitapçığın örnek kodları arasında alfa_fonksiyonlar.htm adlı dosyada bulabilirsiniz. (Aşağıdaki örnekler de alfa_fonksiyonlarXX.php adlı dosyalarda bulunabilir.)

substr()

Bir alfanümerik değişkenin değerinin veya bir metnin tanımladığınız bölümünü verir. İkisi zorunlu, biri seçmeli üç parametre ile kullanılır. Yazılışı:

substr($degisken, başla, [boyut] );

Burada, $degisken yerine içinden bir bölümü seçmek istediğiniz metni tutan değişkenin adını; başla yerine seçme işleminin başlayacağı karakterin baştan itibaren kaçıncıdan sonra olduğunu ve isterseniz boyut yerine de seçilmesini istediğimiz karakter sayısını yazarız. Kaç karakter seçileceğini gösteren boyut parametresini yazmazsanız, PHP değişkenin veya metnin sonuna kadar seçer. Örnek

$secilen = substr ("abcdef", 1);

Burada $secilen değişkeninin değeri "bcdef" olacaktır; çünkü birinci karakterden sonra seçime başlatıyoruz ve seçimin boyutunu belirlemiyoruz. PHP, verdiğimiz metnin sonuna kadar seçecektir.

$degisken = "Olumsuz düşünce ve mekanizmalar üzerine olumlu şeyler bina edilemez!";

$secilen = substr ($degisken, 8, 20);

Burada ise seçime 8'nci karakterden sonra başladığımız ve 20 karakterlik seçim yapılmasını belirttiğimiz için seçilen değer "düşünce ve mekanizma" olacaktır.

Başlanıç olarak verdiğiniz sayı negatif ise (önünde - işareti varsa) seçim işlemine değişkenin sonundan itibaren başlanır. Yukarıdaki substr() fonksiyonunu:

$secilen = substr($degisken, -9);

şeklinde yazarsak, dönen değer, "edilemez!" olacaktır.

trim()

Bir alfanümerik değişkenin değerinin baş ve son tarafındaki boşlukları atar. Yazılışı:

trim($degisken);

Bu fonksiyon değişken değerinin veya metnin başındaki ve sonundaki "\n", "\r", "\t", "\v", "\0", ve aralık işaretini boşluk sayar. Örnek:

$degisken = "\0 Olumsuz düşünce ve mekanizmalar üzerine olumlu şeyler bina edilemez!\n\r\t";

$secilen = trim ($degisken);

Burada seçilen metinde, baştaki boşluk, sondaki yeni satır, satır başı ve sekme karakterleri olmayacaktır.

chr()

Parametre olarak ASCII değerini belirttiğimiz karakteri sağlar. Örnek:

echo (chr(34);

Bu komutla Browser penceresinde çift-tırnak işareti görüntülenir.

ord()

Parametre olarak yazdığınız karakterin ASCII değerini sağlar. Örnek:

echo (ord("A");

Bu komutla Browser penceresinde 65 rakamı görüntülenir. bu fonksiyonun başlıca kullanım alanı, bir değişkenin değerini arzu ettiğimiz bir karakterin ACSII koduyla karşılaştırmak olabilir. Örneğin:

if ( ord($karakter) == 60 { // karakter "<" işareti ise

$karakter = "" ;

}

koduyla, bir Form'dan gelen verileri karakter-karakter sınayabilir ve içinde normal olarak bulunmaması gereken, zararlı kod parçası olması ihtimali bulunan karakterleri ayıklatabiliriz.


strlen()

Bir alfanümerik değişkenin değerinin kaç karakter içerdiğini bildirir. Yazılışı:

strlen($degisken);

Bu fonksiyondan dönen değer tam sayıdır; aritmetik işlemlerde kullanılabilir. Örneğin, ziyaretçinin bir INPUT alanına yazdığı yazının uzunluğunun arzu ettiğimiz ölçülere uygun olup olmadığını sınamakta bu fonksiyondan yararlanabiliriz:

if ( strlen($degisken) > 30 { // girilen değer 30 karakterden uzun ise

echo ("Lütfen 30 karakterden uzun yazmayınız!);

}

printf() ve sprintf()

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 ve ikili sayı olarak döner.

c Değişken tamsayı olarak işlem görür ve ASCII değerinin karşılığı olan karakter olarak döner.

d Değişken tamsayı olarak işlem görür ve ondalık sayı olarak döner.

f Değişken kesirli sayı olarak işlem görür ve kesirli sayı olarak döner.

o Değişken tamsayı olarak işlem görür ve sekiz-tabanlı (octal) sayı olarak döner.

s Değişken alfanümerik olarak işlem görür ve alfanümerik olarak döner.

x Değişken tamsayı olarak işlem görür ve 16 tabanlı (hexadecimal) sayı olarak döner. (Harfler, küçük harf olur).

X Değişken tamsayı olarak işlem görür ve 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 tırnak ve 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 adet nokta eklenmiş ve bütün değer sola hizalanmış olacaktır. Şu komut ise iki değişkenin değerini ve vereceğimiz bir metni aynı satıra yazdıracaktır:

$degisken1 = " İyilik üzerine " ;

$degisken2 = " İyilik üzerine " ;

$metin = "<br>\n" ;

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 adet nokta ile doldurulmak ve 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 nokdtadan) sonra ondalık bölümü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

number_format()

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 bölümün kaç haneli olacağını, ondalık hanesini ve binler basamaklarını ayırmakta kullanılacak karakteri kabul eder. Örnek:

$degisken = 1234567890.1234567890 ;

echo (number_format($degisken, 4 chr(44) , ".") ); //chr(44)=virgül

Bu deyimle 1234567890.1234567890 şeklindeki değer, Browser penceresine "1.234.567.890,1235" şeklinde yazdırılacaktır.

Tarih ve Saat Düzenleme

PHP'nin tarih ve 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-tarih damgasını verir. Bu verinin biçimlendirilmesi için çeşitli parametreler vardır. Bu parametreler, gün adlarının dili ve tarihlerin yazılışı bakımından Web sunucusunun bulunduğu bilgisayardaki bölgesel ayarlara göre sonuç verir.

date() $tarih date( biçimlendirme_parametreleri );

Burada biçimlendirme_parametleri yerine şunları yazabilirsiniz:

a 12 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 12 saatlik sistemde saat: "01" - "12"

H 24 saatlik sistemde saat: "00" - "23"

g 12 saatlik sistemde tek haneli saatlerin önüne sıfır konmadan saat: "1" - "12"

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" - "12"

n Tek hanelilerin önüne sıfır konmadan ay sayısı: "1" - "12"

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 Türkçe bölgesel ayarlar yapılmış bir bilgisayara kurulu Web sunucusunda: "Pazar, 30 Temmuz 2000 07:51:08" yazdırır.

date() ve 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);