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;
}

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir