Gezegen

PHP ile Dizi Değerlerini Türkçe Uyumlu Sıralamak

PHP ile dizi değerlerini Türkçe uyumlu sıralamak için php-intl paketi kurulu olması şartıyla Collector sınıfı çok yararlı olacaktır.

Aşağıdaki örneği ve ürettiği sonuçları inceleyebilirsiniz.

	$dizi[5] = 'i';
	$dizi[6] = 'İ';
	$dizi[7] = 'ö';
	$dizi[8] = 'Ö';
	$dizi[9] = 'ş';
	$dizi[10] = 'Ş';
	$dizi[11] = 'ü';
	$dizi[12] = 'Ü';
	$dizi[1] = 'ç';
	$dizi[2] = 'Ç';
	$dizi[3] = 'ı';
	$dizi[4] = 'I';
	
	//normal hali
	print_r($dizi);

	//asort ile sıralanmış hali
	asort($dizi);
	print_r($dizi);
	
	//colltor->asort ile sıralanmış hali
	$collator = new Collator('tr_TR');
	$collator->asort($dizi);
	print_r($dizi);

Sonuçlar

Array
(
    [5] => i
    [6] => İ
    [7] => ö
    [8] => Ö
    [9] => ş
    [10] => Ş
    [11] => ü
    [12] => Ü
    [1] => ç
    [2] => Ç
    [3] => ı
    [4] => I
)

Array
(
    [4] => I
    [5] => i
    [2] => Ç
    [8] => Ö
    [12] => Ü
    [1] => ç
    [7] => ö
    [11] => ü
    [6] => İ
    [3] => ı
    [10] => Ş
    [9] => ş
)

Array
(
    [1] => ç
    [2] => Ç
    [3] => ı
    [4] => I
    [5] => i
    [6] => İ
    [7] => ö
    [8] => Ö
    [9] => ş
    [10] => Ş
    [11] => ü
    [12] => Ü
)

Linux Alet Çantam

Benim eski nesil i3 işlemcili laptopum var. 64bit Ubuntu kurulu ve 8GB ram takılı halde. Sanal makine içine Windows kurdum. Şimdiye kadar Windows ile yaptığım tek iş arada LibreOffice’in Windows sürümlerini test etmek 🙂

Bir web geliştiricisi olarak çalışma ortamımı tamamen Linux’a taşımış durumdayım.
Read More

Yalın md5 Risk Oluşturuyor

Çok ümit etmemize rağmen kullanıcılar arasında zorlu şifre kullanmak gibi bir eğilim görülmüyor.

Rakam ve harften oluşan standart şifreler md5 ile hash edilse bile, db dökümü alınıp hash taraması yapıldığında kırılmış olarak karşımıza çıkabiliyor.

http://www.md5decrypter.co.uk/ sitesini kullanarak 30 kurumsal kullanıcının şifresini karşılaştırdığımda 13 tanesinin direk bu siteye kayıtlı olduğunu gördüm…

Yalın md5’i terk etmek ama gölgesini sistemde bırakmak için şöyle bir fonksiyon yazdım. Sizin de işinize yarar umarım.

Özgürce kullanabilirsiniz
Read More

Yazılım Tanıtımı: Meld, WinMerge Alternatifi

WinMerge Windows ortamında, özellikle phpBB dil dosyalarını tercüme ederken kullandığım özgür bir yazılımdı. phpBB ile olan mesaimiz bitince* bir daha ihtiyacım olmamıştı.

Linux ortamında WinMerge malesef çalışmıyor. Lakin alternatifler de yok değil. 5-6 tane alternatif olsa da basitlik ve kullanım kolaylığı açısından Meld yazılımı hoşuma gitti.

Projenin Sitesinde özellikleri hakkında çeşitli bilgiler verilmiş durumda. Birazını tercüme edip aktarmak istedim.
Read More

6 Ayda Bir Yeniden Doğan İşletim Sistemi: Ubuntu

Ubuntu, LTS sürümünü kullanmayı seçmediyseniz, her 6 ayda 1 yeniden kurulum yapmaya sevk eden bir Linux dağıtımı.

3 Seneye yaklaşan Ubuntu ve Linux maceram sırasında 1 defalık kendi hatam dışında data kaybı yaşamadım. 6 Ayda bir kurulum yapmak yorucu olabiliyor; lakin çocukları seven benim için her yeni sürüm yeni doğan bir çocuk gibi, tatlı ve şeker bir şey geliyor…

Her çocuk gibi ilk yaptığı iş ağlamak da olabiliyor. Lakin Ubuntu biraz Kemal Sunal’ın “Gülen Adam” filmi gibi, son 3 sürümde gülerek doğuyor… (* kişisel gözlemimdir)
Read More

XML İçindeki Türkçe Karakterler İçin PHP Fonksiyonu

XML içindeki Türkçe karakterlerin sıkıntı olduğunu bilmiyordum.

MsSQL kaynaklı bir XML verisini PHP ve SimpleXML ile işlemeye çalışırken, türkçe karakterler konusunda taklalar attım. Mesela XML içindeki data Abakxfcs gelmiş Lakin aslında Abaküs demek istiyor.

Uğraşırken şöyle bir fonksiyon ortaya çıktı, işimi gördü. Kesin daha basit yolu vardır ama, ben yine paylaşmış olayım.

function xml2tr($string) {
/*
Biraz derleme, çokça kurcalama ile Sabri Ünal tarafından yazılmıştır.
Creative Common + GNU FDL + GPL (v1-v2-v3) ile lisanslanmıştır
Nasıl hoşunuza giderse o lisans ile kullanabilirsiniz
*/
	$string = str_replace("\xc7", "Ç", $string); // Ç
	$string = str_replace("\xe7", "ç", $string); // ç

	$string = str_replace("\xd0", "Ğ", $string); // Ğ
	$string = str_replace("\xf0", "ğ", $string); // ğ

	$string = str_replace("\xdd", "İ", $string); // İ
	$string = str_replace("\xfd", "ı", $string); // ı

	$string = str_replace("\xd6", "Ö", $string); // Ö
	$string = str_replace("\xf6", "ö", $string); // ö

	$string = str_replace("\xdc", "Ü", $string); //Ü
	$string = str_replace("\xfc", "ü", $string); //ü
	//karakter grupları
	$string = str_replace("\xdf;","&",$string);
	$string = str_replace("\x80;","+",$string);
	//uzatmalı karakterler
	$string = str_replace("\xe2", "â", $string); //uzatma a
	$string = str_replace("\xc2", "Â", $string); //uzatma A
	$string = str_replace("\xee", "î", $string); //uzatma İ
	$string = str_replace("\xce", "Î", $string); //uzatma İ
	$string = str_replace("\xfb", "û", $string); //uzatma u
	$string = str_replace("\xfb", "Û", $string); //uzatma u => kesin hatalı
	return $string;
}