PHP Uygulamaları
PHP’ de değişken tipini öğrenme
0PHP ile kod yazarken kullandığınız değişkene tipleri aldığı değere göre otomatik atanır. Kullandığınız değişkenin tipini öğrenmek için gettype() fonksiyonu kullanıır.
<?php $s1="Bilişim"; // karakterdizi (string) türünde bir değişken $i=1; // tamsayı (integer) türünde bir değişken $b=TRUE; // Boolean türünde bir değişken $a=15.987; // ondalık türünde bir değişken echo gettype($s1);echo "<hr>"; echo gettype($i);echo "<hr>"; echo gettype($b);echo "<hr>"; echo gettype($a);echo "<hr>"; ?>
PHP ile dizideki sayıları büyükten küçüğe sıralama
0Sayılardan oluşmuş bir diziyi büyükten küçüğe sıralama
<?php
$sayilar=array(7,3,56,89,0,34,120,700,5,6);
for($i=0; $i<=9; $i++)
{
for($k=$i+1; $k<=10; $k++)
{
if($sayilar[$i]<$sayilar[$k])
{$sakla=$sayilar[$i];
$sayilar[$i]=$sayilar[$k];
$sayilar[$k]=$sakla;}
}
}
for($i=0;$i<=10;$i++)
{
echo $sayilar[$i]. "<br>";
}
?>
Dizilerle çalışırken kendiniz manuel sıralama yapabileceğiniz gibi php fonksiyonlarınıda kullanabilirsiniz.Örneğin;
<?php
$sayilar=array(7,3,56,89,0,34,120,700,5,6);
rsort($sayilar);
for($i=0;$i<=10;$i++)
{
echo $sayilar[$i]. "<br>";
}
?>
yukarıdaki örnekle aynı sonucu verecektir. Dizilerin içeriğini sıralarken İlişkili olmayan dizilerde sort() ve rsort(), ilişkili dizilerde ise asort() ve ksort() fonsiyonları kullanılır.
İlişkili olmayan dizilerde sort() ve rsort(), ilişkili dizilerde ise asort() ve ksort() fonsiyonları kullanılır.
PHP ile tekrarsız rastgele sayı üretme
0PHP’ de rastgele sayı üretmek için rand() fonksiyonu kullanılır. Rand() fonksiyonu iki adet paremetre alır. Bulardan ilki sayı oluşturmaya hangi değerden başlanacağı, ikincisi ise hangi değere kadar sayı oluşturulacağı. Rand() fonksiyonunu ard arda birkaç kez çalıştırdığınızda daha önce üretilen bir değerin tekrar üretildiğini görürsünüz. Bunu önlemek için bir kontrol mekanızması kurmanız gerekir.Bu örnekte üretilen değer bir dizi değişkene atanıyor sonraki değer üretildiğinde dizi içinde o değer var mı diye kontrol ediliyor. Varsa yeni bir değer üretiliyor yosa diziye atılıyor. Kaç değer üretileceğini ve hangi aralıklarda üretileceğini kullanıcıdan form aracılığı ile alıp değişkenlere atarakta kullanabilirsiniz.
<?php
$sayilar[]="";
$i=0;
$kac_sayi_uretilecek=6;
while($i<$kac_sayi_uretilecek)
{
$rastgele=rand(1,49); // 1 ile 49 arası sayi uretiyoruz
if (in_array($rastgele,$sayilar)) // uretilen sayi dizide varmi?
{continue;} // varsa döngüye devam
else //yoksa
{$sayilar[]=$rastgele; //rastgele sayiyi sayilar diznine atiyoruz
$i++;
}
}
foreach ($sayilar as $sayilar_ekrana) //bu yapı dizinin tüm elemanlarını gösterir.
echo $sayilar_ekrana."<br>";
?>
Kelime ve HTML etiketlerini bölmeden devamını oku yapma
0Klasik devamını oku bağlantısı oluşturulurken metnin ilk karakterinden başlanarak istenilen kadar karakter alınır. Örneğin ilk 200 karakter gözüksün daha sonra devamı oku linki eklensin istendiğinde önce metnin uzunluğu alınır, metin uzunluğu istenilen karakterden uzun mu kontrol edilir. Eğer istenilen karakterden uzun ise substr fonksiyonu ile metin bölünür.
$uzunluk=strlen($metin);
if($uzunluk>200){
$makale=substr($metin,0,200)."<br>Devamını Oku";
}
Bu işlemin en büyük dezavantajı kelimelerin yada html etiketlerininde bölünme ve ekranda istenmeyen görüntüler oluşma itimalidir. Bunun önüne geçmek için iki yöntem kullanabilirsiniz. Birincisi bölme işlemi sonucunda explode komutu ile son boşluğa kadar yeniden bölme işlemi uygulayabilirsiniz. İkinci yöntem ise benimde tercihimdir bölme işlemi uygulanacak bölgeye bir açıklama satırı ekleyerek, açıklama satırının bulunduğu yerden bölme işlemi uygulanır.
$metin="Burada yazılanın <!--buradan-->uzun bir metin olduğunu varsayalım"; $giris_metni=strpos($metin,'<!--buradan-->'); echo $giris_metni ? substr($metin,0,$giris_metni) : $metin;
<!–buradan–> açıklama metni yerine siz istediğiniz ifadeyi yazabilirsiniz. Bu uygulamayı geliştirerek editörünüze devamını oku butonu ekleyebilirsiniz. Böylece fare imlecinin bulunduğu noktadan metni bölebilirsiniz. Nasıl yapılacağını bir başka makalede anlatmayı düşünüyorum.
PHP ile zar kaçıncı atışta çift geldi uygulaması
1Soru : Kullanıcı aynı anda iki zar atmaktadır. Kullanıcının kaçıncı seferde çift zar attığını bulan PHP uygulamasını yazınız.
<?php
$zar1=0;$zar2=1;$sayac=0;
while($zar1!=$zar2){
$sayac++;
$zar1=rand(1,6);
$zar2=rand(1,6);
echo $zar1 ."-". $zar2."<br>";
}
echo $sayac."atış sonunda çift geldi";
?>
Ekran Görüntüsü :
Php güncel tarih zamanı Türkçe ve İngilizce yazdırma
0<?php
$tarihgoster = array(
'January' => 'Ocak',
'February' => 'Şubat',
'March' => 'Mart',
'April' => 'Nisan',
'May' => 'Mayıs',
'June' => 'Haziran',
'July' => 'Temmuz',
'August' => 'Ağustos',
'September' => 'Eylül',
'October' => 'Ekim',
'November' => 'Kasım',
'December' => 'Aralık',
'Monday' => 'Pazartesi',
'Tuesday' => 'Salı',
'Wednesday' => 'Çarşamba',
'Thursday' => 'Perşembe',
'Friday' => 'Cuma',
'Saturday' => 'Cumartesi',
'Sunday' => 'Pazar',
);
/* İngilizce gösterimi için */
echo "Bugün ". date("d F Y, l")." Saat şuanda ".date("H:i:s")."<br>" ;
/* Türkçe Gösterim için */
echo "Bugün ". strtr(date("d F Y, l"), $tarihgoster)." Saat şuanda ".date("H:i:s") ;
?>
PHP Date ve Mktime
0bazı durumlarda, bugünden itibaren 90 gün sonrasındaki günün haftanın hangi gününe geleceğini bilmek gibi, ileri ya da geriye yönelik tarih işlemleriyle uğraşmak gerekir. Bu durumda kullanılcacak php komutu mktime() komutudur. Bu komut sayesinde geçmiş ya da gelecekteki bir tarihin Unix zamanına erişilir. //mktime(0,0,0,4,23,2012);
date() ve mktime() işlevleri birlikte, geçmiş ya da gelecek zamanın bulunmasında kullanılabilir.
<strong>$yarın = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));</strong>
<strong></strong><strong>$geçenay = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));</strong>
<strong> $gelecekyıl = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);
</strong>
<strong>
PHP Date Değişkenleri
0Değişkenler
|
Biçim karakterleri |
AÇIKLAMA | ÖRNEKLER |
| d | Ay günlerinin sıfır dolgulu iki haneli gösterimi | 01‘den 31‘e |
| D | Ay günlerinin üç harfli metinsel gösterimi | Pzt‘den Paz‘a |
| j | Ay günlerinin sıfır dolgusuz gösterimi | 1‘den 31‘e |
| l (küçük ‘L’ harfi) | Hafta günlerinin tam metinsel gösterimi | Pazar‘dan Cumartesi‘ye |
| N | Hafta günlerinin ISO-8601 standardında sayısal gösterim | 1‘den (Pazartesi için) 7‘ye (Pazar için) |
| S | Ay günleri için 2 karakterli İngilizce sıralama ekleri | st, nd, rd ya da th. j ile uyumlu çalışmaktadır. |
| w | Hafta günlerinin sayısal gösterimi | 0‘dan (Pazar için) 6‘ya (Cumartesi için) |
| z | Yılın günleri (0′dan başlar) | 0‘dan 365‘e |
|
Hafta |
— | — |
| W | ISO-8601 standartına göre yılın hafta numarası, hafta başlangıcı Pazartesi’dir | Örneğin: 42 (Yılın 42′inci haftası) |
|
Ay |
— | — |
| F | Ayın tam metinsel gösterimi, Ocak ya da Mart gibi | January‘den December‘a |
| m | Ayın sıfır dolgulu sayısal gösterimi | 01‘den 12‘ye |
| M | Ayın üç karakterli, metinsel kısa gösterimi | Jan‘dan Dec‘e kadar |
| n | Ayın sıfır dolgusuz sayısal gösterimi | 1‘den 12‘ye kadar |
| t | Belirtilen ayın gün sayısı | 28‘den 31‘e |
|
Yıl |
— | — |
| L | Artık yıl olduğunda | Eğer artık yılsa 1, değilse 0. |
| o | ISO-8601 standardı yıl numarası. ISO hafta numaralarının (W) ait olduğu yılın gösterilmesi dışında Y ile aynı değere sahiptir | Örnekler: 1999 ya da 2003gibi |
| Y | Yılın 4 haneli sayısal, tam gösterimi | Örnekler: 1999 ya da 2003gibi |
| y | Yılın iki haneli gösterimi | Örnekler: 99 ya da 03 gibi |
|
Saat |
— | — |
| a | Küçük harfli öğleden önce ve öğleden sonra | am ya da pm |
| A | Büyük harfli öğleden önce ve öğleden sonra | AM ya da PM |
| B | Swatch İnternet saati | 000‘dan 999‘a |
| g | Saatin, 12-saatlik sıfır dolgusuz gösterimi | 1‘den 12‘ye |
| G | Saatin, 24-saatlik sıfır dolgusuz gösterimi | 0‘dan 23‘e |
| h | Saatin, 12-saatlik sıfır dolgulu gösterimi | 01‘den 12‘ye |
| H | Saatin, 24-saatlik sıfır dolgulu gösterimi | 00‘dan 23‘e |
| i | Sıfır dolgulu dakika gösterimi | 00 ile 59 arasında |
| s | Sıfır dolgulu saniye gösterimi | 00 ile 59 arasında |
| u | Mikrosaniye | Örneğin: 654321 |
|
Zaman dilimi |
— | — |
| e | Zaman dilimi belirteci | Örnekler: UTC, GMT,Europe/Istanbul |
| I (büyük ı) | Yaz saati uygulaması var mı? | Varsa 1, yoksa 0. |
| O | Saat olarak Greenwich zamanı (GMT) farkı | Örneğin: +0200 |
| P | Saat ve dakika olarak Greenwich zamanı (GMT) farkı | Örneğin: +02:00 |
| T | Zaman dilimi kısaltması | Örnekler: EST, EET gibi |
| Z | Saniye cinsinden saat farkı. UTC’nin batısı daima negatif, doğusu ise daima pozitif değerlidir. | -43200‘den 50400‘e |
|
Tam Tarih/Saat |
— | — |
| c | ISO 8601 standardı tarih | 2004-02-12T15:19:21+00:00 |
| r | » RFC 2822 biçiminde tarih | Örneğin: Thu, 21 Dec 2000 16:01:07 +0200 |
| U | Unix Zaman Başlangıcından (1 Ocak 1970 00:00:00 GMT) itibaren geçen saniye sayısı | time() işlevine bakınız |
Biçim dizgesinde tanınmayan karakterler olduğu gibi yazdırılacaktır. Z biçimi gmdate() işleviyle kullanıldığında daima 0 değerini döndürür.
PHP de Sayfa Yönlendirme Fonksiyonları
0PHP sayfa yönlendirmeniz gerekiyorsa kullanılabilecek iki uygulama var.
header(“Location:Git.php”); –> Yazdığınız sayfaya veya URL’ ye beklemeden yönlendirir.
header(“Refresh: 3; url=Git.php”); —> Location dan farklı olarak süre belirleye bilirsiniz.
Bu noktada unutmamanız gereken “Location” ve “Refresh” header başlattır. <HTML>’ de header başlattığından Location ve Refresh kullanacaksanız <HTML> daha sonra kullanılmalı.
Sayfanızda birden fazla başlık bilgisi göndermeniz gerekiyorsa sayanızın başında ob_start() fonksiyonunu çağırmanız gerekir. ob_start() fonksiyonu bir tampon bölge oluşturarak birden fazla başlık bilgisinin aynı anda gönderilebilmesini sağlar.

Son Yorumlar