Tagphp

PHP Yerel Zamanı Ayarlamak

Merhaba arkadaşlar bu yazımda PHP ile Yerel Zamanı Ayarlamak başlıklı konumdan bahsedeceğim. Yerel Zamanı Ayarlamaktan kastım şu eğer date() fonksiyonunu kullanıyorken farketteyseniz Gün, Ay isimlerini İngilizce yazdığını farkederseniz. İşte bunları Yerel Zamanımızı bulunduğumuz ülkeye göre ayarlayıp Türkçeye nasıl çevireceğimizden bahsedeceğim.

Bu yazımda bahsedeceğim fonksiyonlardan ilki setlocale() fonksiyonu

setlocale() Fonksiyonu

setlocale(), kesin olarak 2 parametre ve isteğe bağlı olarak 3 parametre alan bir fonksiyondur. Bunlardan ilki hangi işlem için Yerel Zaman ayarlaması yapacağımızı belirtiyor. Bizim tarih ayarlarımız için kullanacağımız için parametre LC_TIME olacak. İkinci parametre ise hangi Yerel Zamana göre ayarlamak istiyorsak o Yerel Zamanın string halini yazıyoruz Türkiye için “tr_TR” string ifadesi yeterli olacaktır. Şimdi setlocale() fonksiyonunu kullanarak bugünün tarihini Türkçe yazmaya çalışalım

<?php 

setlocale(LC_TIME, "tr_TR");

$date = getdate();

print_r($date);

?>

bu kodları çalıştırırsanız geri dönen dizide hala İngilizce Gün ve Ayların yazdığını görebilirsiniz.

şeklinde bir geri dönüşü olmuştur yazdığımız kodun aslında yanlış bir şey yapmıyorsunuz sadece setlocale() ile bir Yerel Zaman belirlediysek artık strftime() fonksiyonu ile tarihi ekrana yazdırmamız gerekiyor. setlocale() fonksiyonu hakkında detaylı bilgi almak için tıklayınız. Şimdi strftime fonksiyonundan bahsetmeye başlayalım.

strftime() Fonksiyonu

strftime() fonksiyonu date() fonksiyonu ile aynı parametreleri alır yani ilk parametresi biçim ve ikinci parametre ise zaman damgasıdır yani UNIX Zamandır ama sadece setlocale() fonksiyonu ile Yerel Zaman değiştirilirse date() fonksiyonundan farklı sonuçlar vermeye başlar bize ve ayrıca biçim kısımlarında yazdığımız d M Y gibi ifadeler biraz daha farklıdır. Bu ifadelerden bir kaç örnek vermek gerekirse

%AGün isimlerini tam olarak verirPazartesi, Salı gibi
%dAyın kaçıncı günü olduğunu verir01, 12, 30 gibi
%DAyın kaçıncı günü olduğunu verir1, 12, 30 gibi
%bAy isminin kısaltmasını verir.Oca. gibi
%BAyın tam ismini verir.Ocak, Şubar gibi
%YYılın 4 haneli halini verir.2019, 2018, 1990 gibi

şeklindedir bunlar hakkında detaylı bilgi almak için tıklayınız.

Bu yaptıklarımız aslında hala bize tam olarak doğru zamanı vermiyor olabilir. Yerel Zamanımızı Türkiye olarak tanımlamış olsak bile saatlerimiz hala farklı olabilir ekranımıza saatimizi yazdılarım.

<?php 
setlocale(LC_TIME, 'tr_TR');
strftime("%T");
?>

Bu yazıyı yazarken saat 14:23 olsa bile bana ekranda 3 saat öncesi olan 11:23 saatini döndürüyor. Yani arka planda hala birşeyler yanlış o zaman yapmamız gereken şey Yerel Saatimizi de değiştirmek fakat öncelikle nasıl tanımlanmış Yerel Saatimizin hangi ülkeye göre olduğunu öğrenelim.

<?php 
echo date_default_timezone_get();
?>

fonksiyonu ile Yerel Saatimizin hangi ülkeye göre ayarlanmış olduğunu öğrenebiliriz. Bu Yerel Saati değiştirmek için ise

date_default_timezone_set() fonksiyonunu kullanmamız gerekiyor.

<?php
setlocale(LC_TIME, 'tr_TR'); 
date_default_timezone_set("Europe/Istanbul");
echo strftime("%T");
?>

şeklinde yazarsak saatimizinde belirttiğimiz ülkedeki bu örnekte Türkiye saatine göre ayarlandığını görebilirsiniz.

Özet,

Bu yazımda sizlere PHP ile Yerel Zaman Ayarlamak adlı konuyu detaylı bir şekilde anlattım. setlocale(), strftime(), date_default_timezone_get ve date_default_timezone_set fonksiyonları nasıl kullanılır. strftime() fonksiyonunda değişken biçimlerin neler olduğundan bahsettim.

Bir sonraki yazımda sizlere PHP Date Sınıfı konusundan bahsedeceğim. O zamana kadar PHP hakkında yazmış olduğum diğer yazılarımı merak ediyorsanız buraya tıklayabilirsiniz.

PHP Tarih Değişimleri

Merhaba arkadaşlar bu yazımda sizlere PHP Tarih Değişimleri konusundan bahsedeceğim. Tarih Değişimlerinden kastım GG AA YY şekilde ve ya benzeri şekilde UNIX Tarihine çevirme ve ya UNİX Tarihi insanların anlayabileceği bir tarih formatına çevirme işlemleri.

Bu yazımda bahsedeceğim fonksiyon strtotime() fonksiyonu olacaktır. Bu fonksiyon girilen değer bir tarih formatında ise unix tarihine çevirir.

strtotime, fonksiyonunun 2 adet kullanım şekli vardır. Bunların ilki içine bir tarih olmayan ama belirli bir günü içeren bir zaman bilgisi verebiliriz.

Yani,

<?php 
echo strtotime('now');
echo strtotime('+1 day');
echo strtotime('+1 week');
echo strtotime('+1 week 2 days 4 hours 2 seconds');
echo strtotime('next Thursday');
echo strtotime('last Sunday');
?>

şeklinde kullanımları vardır ikinci kullanım ise

YYYY-MM-DD SS:DK:SN

şeklinde vereceğimiz bir tarih formatını strtotime fonksiyonuna parametre olarak gönderirsek bize o belirtilen tarihin UNIX Zamanını verir. Örnek olarak

<?php 
$tarih = '2019-01-10 20:10:55';
echo strtotime($tarih);
?>

şeklinde yazarsak 10 Ocak 2019 saat 20:10:55 tarihinin UNIX Zaman olarak karşılığını bize verir. strtotime() ile gelen tarihi date() fonksiyonu ile kullanırsak istediğimiz tarih formatında gelen tarihi yazabiliriz.

Özet,

Bu yazımda sizlere PHP Tarih Değişimleri konusundan bahsettim. Gelen bir tarihi UNIX zamanına ve UNIX tarihini normal bir tarih formatına nasıl çevirebileceğimizden bahsettim. Ayrıca strtotime fonksiyonu hakkında daha detaylı bilgi almak isterseniz buraya tıklayabilirsiniz.

Bir sonraki yazımda sizlere Yerel Zamanı Nasıl Ayarlayacağımızdan bahsedeceğim. O zamana kadar PHP hakkında yazmış olduğum diğer yazıları merak ediyorsanız buraya tıklayabilirsiniz.

Tarih Fonksiyonları

Merhaba arkadaşlar bu yazımda sizlere PHP’de tarih fonksiyonlarının kullanımından bahsedeceğim. Bu yazımda bahsedeceğim Tarih Fonksiyonları şu şekildedir,

  • date()
  • getdate()
  • time()

date() Fonksiyonu

date() fonksiyonu 2 adet parametre alır bunlardan ilki zamanın biçimi, ikincisi ise zaman damgası olarak adlandırdığımız(timestamptir). İkinci parametre olan zaman damgasını time fonksiyonunu anlatırken daha iyi anlayacaksınız. Şimdi ilk parametre olan biçim nedir ondan bahsetmek gerekirse.

Biçim, aslında tarihimizin nasıl yazılacağıdır yani,

  • 30 12 2019
  • 30 12 19
  • 3 12 2019
  • 30 Aralık 2019
  • 30 Ara 2019

şeklinde ki tiplerden hangisinin gözükeceğini belirtmemizde yardımcı olur. Ben şimdi sizlere bu biçimlerden en fazla kullandıklarımı bir tablo olarak sizlere aktaracağım.

dAy gününü başına 0 koyarak gösterir03, 30 gibi
DGünleri kısaltma olarak gösterirPzt, Paz gibi
FAyın adını yazarOcak, Mart gibi
mAyın sayısal halini yazar01,12 gibi
MAyın kısaltmasını yazarJan, Dec gibi
nAyın sayısal halini yazar1, 12 gibi
YYılı 4 haneli yazar1999, 2019 gibi
yYılı iki haneli yazar99, 19 gibi

Şimdi date() fonksiyonu ile bugünü yazmak istersek. Şu şekilde bir kodumuz olacaktır.

<?php
echo date("d m Y");
?>

şeklinde yazdığım zaman bize GG AA YY şeklinde bir çıkışı olacaktır. Yani ekrana 30 3 2019 yazacaktır ben bunların arasında “/” işareti olmasını istiyorsam eğer

<?php 
echo date("d/m/Y");
?>

şeklinde bir kodum olmalıdır. Yukarıda tablosunu verdiğim biçimler hakkında daha detaylı bilgiyi de buraya tıklayarak öğrenebilirsiniz.

getdate() Fonksiyonu

getdate() Fonksiyonu istenirse tek parametre alıyor parametre verilmezse şu anki günümüzü tarih olarak kabul ederek çalışan bir fonksiyondur ve geriye bize bir dizi döndürüyor. Bu döndürülen dizinin içinde,

  • [‘seconds’] => Saniyenin sayısal gösterimi
  • [‘minutes’] => Dakikanın sayısal gösterimi
  • [‘hours’] => Saatlerin sayısal gösterimi
  • [‘mday’] => Ayın günlerinin sayısal gösterimi
  • [‘wday’] => Haftanın gününün sayısal gösterimi
  • [‘mon’] => Ayın sayısal gösterimi
  • [‘year’] => Yılın 4 haneli gösterimi
  • [‘yday’] => Yıl gününün sayısal gösterimi
  • [‘weekday’] => Haftanını gününün metinsel gösterimi
  • [‘month’] => Ayın metinsel gösterimi
  • [0] => Unix zamanında şu anki günün karşılığını vermektedir.

Unix Zamanı Nedir ?

Unix Zamanı 1 Ocak 1970 tarihini başlangıç tarihi alan ve 1 Ocak 1970’den olduğunuz güne kadar geçen zamanı saniye cinsinden bize döndürür. Unix zamanı negatif bir değer ise 1 Ocak 1970’den öncesini pozitif bir değer ise 1 Ocak 1970’den sonrasında olduğumuzu gösterir.

Bu fonksiyonu kullanmak için şöyle bir komut kullanmamız gerekir

<?php 
print_r(getdate());
?>

bu kodun geri dönüşü şu şekilde olacaktır

bu dizi ile yapacağınız işlemlerin bazılarını ileri ki yazılarımda bahsedeceğim fakat genel olarak tamamen zamanın içinde yolculuk yapmak size kalmış bir durum 🙂

time() Fonksiyonu

time() fonksiyonu herhangi bir parametre almayan ve bize daha demin bahsetmiş olduğum Unix Zaman değerini döndüren bir fonksiyondur. Yani geriye date() fonksiyonunu anlatırken bahsettiğimiz zaman dolgusunu döndürür.

<?php 
echo time();
?>

şeklinde yazıp çalıştırırsak 1 Ocak 1970’den günümüze kadar geçen saniyeyi bir değer olarak bize döndürür.

Özet,

Bu yazımda sizlere Tarih Fonksiyonlarından date, getdate ve time fonksiyonunu anlattım. Time fonksiyonundan geri dönen anlamsız sayıların ne anlama geldiğini yani Unix Zamanın ne olduğundan bahsettim.

Bir sonraki yazımda sizlere Tarih Değişimleri konusundan bahsedeceğim. O zamana kadar PHP hakkında yazmış olduğum diğer yazılarımıda merak ediyorsanız buraya tıklayabilirsiniz.

SEF Link Oluşturma

Merhaba arkadaşlar bu yazımda sizlere nasıl SEF Link oluşturulacağından bahsedeceğim.

Bu yazımı şu başlıklar altında inceleyeceğim,

  • SEF Link Nedir ?
  • SefLink Oluşturma

SEF Link Nedir ?

SEF Link, Seo Friendly Link’in açılımıdır ve arama motorlarının hoşuna gidecek tarz linkler olmalıdır. Genel olarak bir kaç örneği vardır bu örnekler

  • siteadresi.com/blog-basligi
  • siteadresi.com/15/blog-basligi
  • siteadresi.com/blog-basligi/15

şeklinde olanlardır. Yani genel olarak bir çok internet sitesinde göreceğiniz link yapısıdır. Bu link yapısını PHP’nin String Fonksiyonlarını kullanarak çok kolay bir şekilde elde edebilirsiniz.

SEF Link Oluşturma

SEF Link oluşturmak için biraz php bilgisi ve .htaccess dosyamızı biraz düzenlememiz gerekir. .htaccess dosyasının ne olduğunu bilmiyorsanız bu konu hakkında yazmış olduğum yazıya gidebilirsiniz.

Şimdi öncelikle bir metin verelim ve onu nasıl bir yapıya çevireceğimizden bahsedeyim.

<?php
// Verilen Metin
  $verilen = 'SEF Link Oluşturma';
// SEF Link'e Çevirilecek Hali
  $sef = 'sef-link-olusturma';
?>

şeklinde olmalıdır. Burada ne yaptığımıza bakarsak öncelikle tüm karakterlerin boyutunu küçülttük daha sonra türkçe karakteri düzelttik ve boşluklar yerine “-” işaretini yerleştirdik. Bu işlemi bir çok yerde kullanacağımız için bunu bir fonksiyon olarak yazacağım.

<?php 
function SefLink($str)
{

  $str = str_replace(
    ['ı','ğ','ö','ç','ş','ü','İ','Ğ','Ü','Ş','Ç','Ö'],
    ['i','g','o','c','s','u','I','G','U','S','C','O'],
    $str);
    $str = strtolower($str);
    $str = preg_replace('/[^a-z0-9]/','-',$str);
    $str = preg_replace('/-+/','-',$str);
  return trim($str,'-');
}
?>

Bu fonksiyonda yapılan işlemlerden bahsetmek gerekirse

  • Türkçe karakterler, İngilizce karakter karşılıklarına çevrilir.
  • Tüm karakter küçük harfe dönüştürülür.
  • Tüm boşluklar ve özel karakterler yerine “-” işareti yerleştirilir.
  • Arka arkaya tekrar eden “-” işaretleri sadece bir adet “-” işaretini dönüştürülür.
  • En son olarak trim fonksiyonuna “-” karakterini 2. parametre olarak göndererek. Başlığımızın başında ve sonunda oluşan gereksiz “-” işaretleri silinir.

Bunu hallettikten sonrası ise tamamen işimiz htaccess dosyası ile oluyor.

htacces hakkında yazmış olduğum yazıyı incelediyseniz htaccess ile link yapılarını manipüle edebileceğimizi görmüşsünüzdür. Şimdi bu işlemi yapma zamana

RewriteEngine On

RewriteRule ^/([a-zA-Z0-9-_]+)$ blog.php?title=$1 [NC,QSA]

Burada yaptığımız işlemlerden detaylı olarak bahsetmek gerekirse

Öncelikle kodlamış olduğunuz linkin yapısı blog.php?title=blog-baslik şeklinde olacağını varsayıyorum ve eğer /([a-zA-Z0-9-_]+) şeklinde bir link yapısı ile karşılaşırsan blog.php?title= sayfasının çıktısını ekrana vermesini söylüyoruz.

Burada bilmeniz gereken önemli nokta linkleri manipüle ederken olmasını istediğimiz link yapısı “^” işareti başlar ve “$” işareti ile biter.

Özet,

Bu yazımda sizlere SEF Linklerin nasıl oluşturulduğundan bahsettim. SEF Link oluşturan bir PHP fonksiyonu yazdım ve bunun sırasıyla ne işlem yaptığından bahsettim daha sonra ise htaccess dosyasından faydalanarak linkimizi nasıl manipüle edebileceğimizden bahsettim.