Navigate / search

Php ile Büyük & Küçük Harf Çevirme Türkçe Problemi

Konu: Php ile Büyük & Küçük Harf Çevirme Türkçe Problemi

Yeni fonksiyonlarımız : mb_strtolower() , mb_strtoupper()

Php ile harfleri küçük harftan büyük harfe,büyük harften küçük hafta çevirmek ya da sadece ilk harfleri büyütmek oldukça basittir. Bir kaç Php fonksiyonu ile bunları gerçekleştirebilirsiniz. Bu fonksiyonları anlattığım yazıma bakabilirsiniz.

Php’de Büyük & Küçük Harfe Çevirme

Bu fonksiyonların kullanımı sırasında Türkçe karakter problemleri yaşıyoruz. Bu konuyla ilgili bir kaç geri dönüşün ardından bu problemlere çözüm getirecek UTF-8 ile harfleri değiştirebileceğiniz fonksiyonları sizinle paylaşacağım.

Öncelikle strtolower fonskiyonundan başlayalım. Daha önceki derste anlatmış olduğum gibi bu fonkisyonumuz harfleri küçük harfe çevirmeyi sağlıyor. strtolower fonskiyonu yerine mb_strtolower fonskiyonunu kullanacağız ve karakter setimizi UTF-8 olarak belirteceğiz. Bu sayede harfleri küçültüp büyültürken türkçe karakterlerde sorun yaşamayacağız. Şimdi konuyla alakalı fonksiyonların kullanımı görelim.

1
2
3
4
5
// STRTOLOWER (harf küçültme)
strtolower($metin);
 
// STRTOUPPER (harf küçültme)
strtoupper($metin);

yerine;

1
2
3
4
5
// STRTOLOWER (harf küçültme)
mb_strtolower($metin,"utf-8"); // encoding olarak kullanımı
 
// STRTOUPPER (harf küçültme)
mb_strtoupper($metin,"utf-8"); // encoding olarak kullanımı

Fonksiyonlarını kullanarak Türkçe karakter probleminden kurtulmuş olacağız.

mb_strtolower ve mb_strtoupper fonksiyonularını kullanırken karakter setimizi UTF-8 olarak belirlediğimiz için Türkçe karakter problemi yaşamayacağız ;) Aynı şekilde karakter set sorununu substr fonksiyonu ile de yaşayabilirsiniz. Konuyla ilgili şu yazımı okuyabilirsiniz.

Php Substr Türkçe Karakter Problemi

Bunları öğrendiğimize göre kullanabileceğiniz çok profesyonel olmayan ama heryerde işinizi görebilecek bir kaç fonskiyonu sizinle paylaşacağım.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
function tr_strtolower($metin) {
    return mb_strtolower($metin, 'utf-8');
}
 
function tr_strtoupper($metin) {
    return mb_strtoupper($metin, 'utf-8');
}
 
function tr_ucfirst($metin) {
	$ilk = mb_substr($metin,0,1, 'utf-8');
	$kalan = mb_substr($metin,1,strlen($metin), 'utf-8');
        return tr_strtoupper($ilk).tr_strtolower($kalan);
}

Kendi oluşturduğumuz fonksiyonları kendi projemizde karakter set belirtmeden kullanabiliriz.

1
2
3
tr_strtolower($metin);
tr_strtoupper($metin);
tr_ucfirst($metin);

strftime() Türkçe Karakter Problemi [UTF-8]

Strftime() fonksiyonunu kullanırken UTF-8 sayfalarınızda türkçe karakter problemi yaşayabilirsiniz. ISO-8859-9 sorunsuz çalışır UTF-8′e çevirdiğimizde Türkçe karakterler bozuk görünüyor..

23 May�s 2014 10:55:30

strftime() Türkçe Karakter Problemi Çözümü

1
2
setlocale(LC_TIME,'turkish');
$tarih    = iconv('latin5','utf-8',strftime('%Y %B %d'));

Bunu her defasında kullanmak istemiyor iseniz fonksiyon haline getirebilirsiniz. Aşağıdaki fonksiyonu rahatça bu sorunu yaşamadan kullanabilirsiniz

1
2
3
4
function strftime_tr($date_format){
	$tarih    = iconv('latin5','utf-8',strftime($date_format)); 
	return $tarih; 
}

Kullanımı;

1
echo strftime_tr('%Y %B %d');

Sonuç:

23 Mayıs 2014 10:57:21

strftime() ile Türkçe Zaman Verileri

Bir önceki derste date() fonksiyonu ile basit bir şekilde tarih ve saat verilerini kullanabilmiştikAma gün ve ay isimlerinde türkçe problemiyle karşılaştırmıştık.Strftime() fonksiyonu ile gün ve ay isimlerini istediğimiz dilde çekebileceğiz.İstediğimiz dil derken PHP’nin desteklediği dillerde.Peki bu PHP hangi dilde yazdırmak istediğimizi nasıl anlar.PHP’nin hangi dilde yazdırmamızı istediğini kodlarımızın başında bir tanımla yaparak belirtiriz.
Bu tanımla şu Şekildedir;

setlocale(LC_ALL,"turkish");

Böylelikle dilimizi türkçe olarak belirlemiş olduk.Şimdi strftime() fonksiyonumuzun kullanımına geçeceğiz.Ama date() fonksiyonunda kullandığımız parametler burda geçerli olmayacak.Strftime() fonksiyonunu kullanmadan önce bu parametrelerin listesini vereceğim.
Aşağıdaki tabloda verilen listede hem date() hemde strftime() fonksiyonun parametleri yan yana verilmiştir.Karşılaştırırsak bulabiliriz.Ayrıca tablonun en sağında sunucunuzun bulunduğu server işletim sistemine destek verip vermediği yazmaktadır.Listedeki bazı parametreler Windows sunucularda çalışmamaktadır.

strftime() Fonksiyonu için Tarih ve Saat Parametleri

Şimdi strftime() ile hem saat hem gün hem ay hemde yılı yazdıralım.
saniye için %S
dakika için %M
saat için %H
haftanın bulunduğunuz gününün adı %A
ay içindeki bulunduğunuz gün sayısı %d
bulunduğunuz ay adı %B
bulunduğunuz Yıl %Y

Şimdi program içinde bu parametreleri kullanalım.

1
2
3
4
5
setlocale(LC_ALL,"turkish");
 
print "Bugün günlerden ".strftime("%A")."<br>";
print "Saat ".strftime("%H:%M:%S")."<br>";
print "Tarih ".strftime("%d.%B.%Y")."<br>";

Sonuç;

Bugün günlerden Pazartesi
Saat 21:40:44
Tarih 26.Nisan.2010
Strftime() fonksiyonu ile kullanabileceğiniz tüm işlevler aşağıdadır.
Format Açıklama Döndüreceği Değer
Günler
%a Gün adını kısa olarak yazar Paz,Cum
%A Gün adının tamamını verir Pazartesi,Çarşamba
%d 2 haneli olarak günü verir 01 - 31
%e Tek haneli olarak günü verir 1 - 31
%j 3 haneli olarak yılın kaçıncı günü olduğunu verir. 001 - 366
%u Haftanın kaçıncı gününde olduğumuzu verir 1 (Pazartesi)  7(Pazar)
%w Haftanın kaçıncı gününde olduğumuzu verir(0′dan başlar) 0 (Pazartesi)  6(Pazar)
Haftalar
%V 2 Haneli olarak kaçıncı haftada olduğumuzu verir 1 – 53
Aylar
%b Kısa ay adını verir Oca,Şub,Mar
%B Ay adının tamamını verir Ocak,Haziran
%h %b ile aynı görevi yapar Oca,Şub,Mar
%m 2 haneli olarak ay sayısını verir 01 (Ocak) through 12(Aralık)
Yıl
%C Kaçıncı yüzyılda olduğu bilgisi verir 19 for the 20th Century
%g Two digit representation of the year going by ISO-8601:1988 standards (see %V) Örnek: 09 for the week of January 6, 2009
%G The full four-digit version of %g Örnek: 2008 for the week of January 3, 2009
%y Two digit representation of the year Örnek: 09 for 2009, 79for 1979
%Y 4 Haneli yıl sayısı verir. Örnek: 2038
Time
%H 2 Haneli saat sayısı 00 - 23
%k Tek haneli saat sayısı 0 - 23
%I Two digit representation of the hour in 12-hour format 01 through 12
%l (lower-case ‘L’) Hour in 12-hour format, with a space preceding single digits 1 through 12
%M Two digit representation of the minute 00 through 59
%p UPPER-CASE ‘AM’ or ‘PM’ based on the given time Örnek: AM for 00:31, PMfor 22:23
%P lower-case ‘am’ or ‘pm’ based on the given time Örnek: am for 00:31, pmfor 22:23
%r Same as "%I:%M:%S %p" Örnek: 09:34:17 PM for 21:34:17
%R Same as "%H:%M" Örnek: 00:35 for 12:35 AM, 16:44 for 4:44 PM
%S Two digit representation of the second 00 through 59
%T Same as "%H:%M:%S" Örnek: 21:34:17 for 09:34:17 PM
%X Preferred time representation based on locale, without the date Örnek: 03:59:16 or15:59:16
%z The time zone offset. Not implemented as described on Windows. See below for more information. Örnek: -0500 for US Eastern Time
%Z The time zone abbreviation. Not implemented as described on Windows. See below for more information. Örnek: EST for Eastern Time
Saat
%c Gelişmiş saat formatı Örnek: Tue Feb 5 00:45:10 2009 for February 5, 2009 at 12:45:10 AM
%D "%m/%d/%y" işlevinin aynısını tek işlevde yapmamızı sağlar Örnek: 02/05/09 for February 5, 2009
%F "%Y-%m-%d" işlevinin aynısını tek işlevde yapmamızı sağlar Örnek: 2009-02-05 for February 5, 2009
%s Unix Epoch Time timestamp (same as the time() function) Örnek: 305815200 for September 10, 1979 08:40:00 AM
%x Preferred date representation based on locale, without the time Örnek: 02/05/09 for February 5, 2009
Diğer
%n Yeni satır ("\n")
%t Tab boşluğu ("\t")
%% Özel karakter koruması ("%")