Zoque.Forum
Dirsek Teması:
Geri Dön Zoque.Forum » Webmaster Kaynaklari » Sunucu Tabanlı Programlama (Server Side) » PHP » Türkçe karakterleri latin yapmak, UTF8, PHP, strtr


Yanıt
 
LinkBack Seçenekler
Old 23.01.2007   #1 (permalink)
 
s5prin's Avatar
 
Üyelik Tarihi: 16.12.2006
Yer: istanbul
Yaş: 26
Mesaj: 483
Türkçe karakterleri latin yapmak, UTF8, PHP, strtr


Merhabalar;

Her zaman kullandığım Türkçe karakterleri latin'e çevirme işini şöyle yapıyordum;
PHP Code:
$strstrtr($str"çğıöşüÇĞİÖŞÜ""cgiosuCGIOSU"); 
Her zaman kusursuz çalışıyor(du). Ancak sevgili $str değişkenimiz utf8 olunca iş sarpa sarıyor. Çünkü strtr() fonksiyonu multibyte (utf8) desteklemiyor. Çözüm için şu arkadaş tam aradığım yöntemi kullanmış ama maalesef (en azından Türkçe karakterler için) çalışmıyor. Üşenmedim Türkçe karakterlerin tek tek hexadecimal karşılığını bulup arkadaşın yaptığı yöntemle fonksiyonu yeniden yazdım (sorunla 2 gündür uğraşıyorum) ama yine karakterleri anlamsız şekilde çeviriyor. Çözümü Multibyte String Fonksiyonları 'nda aradım bu seferde PHP sağolsun bütün string fonksiyonlarının mb_ versyonunu yapmış strtr() için mb_strtr() gibi birşey yapmamış. Takıldım kaldım...

Yazdığım ve düzgün çalışmayan hexadecimal Türkçe karakter çevirici :
PHP Code:
// translate certain characters ???????????
function latinChars($str) {
  
$str strtr($str,"\xc3a7",'c');
  
$str strtr($str,"\xc49f",'g');
  
$str strtr($str,"\xc4b1","i");
  
$str strtr($str,"\xc3b6","o");
  
$str strtr($str,"\xc59f","s");
  
$str strtr($str,"\xc3bc","u");
  
$str strtr($str,"\xc387",'C');
  
$str strtr($str,"\xc49e",'G');
  
$str strtr($str,"\xc4b0","I");
  
$str strtr($str,"\xc396","O");
  
$str strtr($str,"\xc59e","S");
  
$str strtr($str,"\xc39c","U");
  return 
$str;

Yardım!
__________________
Spoiler:
s5prin şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 23.01.2007   #2 (permalink)
 
s5prin's Avatar
 
Üyelik Tarihi: 16.12.2006
Yer: istanbul
Yaş: 26
Mesaj: 483
Re: Türkçe karakterleri latin yapmak, UTF8, PHP, strtr

Sen git 2 günden fazla uğraş, sonra bulama, belki biri anlar ümidi ile buraya yaz, PHP editöre geri dön, fikrin gelsin, 45 saniyede çöz:

PHP Code:
// translate certain characters =)
function latinChars($str) {
  
$str ereg_replace('ç''c'$str);
  
$str ereg_replace('ğ''g'$str);
  
$str ereg_replace('ı''i'$str);
  
$str ereg_replace('ö''o'$str);
  
$str ereg_replace('ş''s'$str);
  
$str ereg_replace('ü''u'$str);
  
$str ereg_replace('Ç''C'$str);
  
$str ereg_replace('Ğ''G'$str);
  
$str ereg_replace('İ''I'$str);
  
$str ereg_replace('Ö''O'$str);
  
$str ereg_replace('Ş''S'$str);
  
$str ereg_replace('Ü''U'$str);
  return 
$str;

Teşekkürler =)
__________________
Spoiler:

Mesaj s5prin tarafından 23.01.2007 (22:44) yeniden düzenlendi. Açıklama: 1 karakteri yanlış yazmışım.
s5prin şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 24.01.2007   #3 (permalink)
mow
 
Üyelik Tarihi: 28.03.2003
Yer: İzmir
Yaş: 26
Mesaj: 784
Re: Türkçe karakterleri latin yapmak, UTF8, PHP, strtr

$str= strtr(iconv('UTF-8','ISO-8859-9',$str), "çğıöşüÇĞİÖŞÜ", "cgiosuCGIOSU");
mow şu an çevrimiçi  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 24.01.2007   #4 (permalink)
 
s5prin's Avatar
 
Üyelik Tarihi: 16.12.2006
Yer: istanbul
Yaş: 26
Mesaj: 483
Re: Türkçe karakterleri latin yapmak, UTF8, PHP, strtr

Teşekkürler. Ancak diğer diller'de olaya dahil olunca böylesine basit bir satırla yırtamıyoruz. Yoksa yırtabiliyor muyuz?
__________________
Spoiler:
s5prin şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 24.01.2007   #5 (permalink)
 
s5prin's Avatar
 
Üyelik Tarihi: 16.12.2006
Yer: istanbul
Yaş: 26
Mesaj: 483
Re: Türkçe karakterleri latin yapmak, UTF8, PHP, strtr

Alıntı:
mow tarafından gönderilen mesaj: Mesajı Görüntüle
$str= strtr(iconv('UTF-8','ISO-8859-9',$str), "çğıöşüÇĞİÖŞÜ", "cgiosuCGIOSU");
Bu arada bu doğru çalışmadı mow
__________________
Spoiler:
s5prin şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 1 hafta önce   #6 (permalink)
 
Üyelik Tarihi: 17.11.2008
Yer: Antakya
Mesaj: 2
Re: Türkçe karakterleri latin yapmak, UTF8, PHP, strtr

Alıntı:
s5prin tarafından gönderilen mesaj: Mesajı Görüntüle
Sen git 2 günden fazla uğraş, sonra bulama, belki biri anlar ümidi ile buraya yaz, PHP editöre geri dön, fikrin gelsin, 45 saniyede çöz:

PHP Code:
// translate certain characters =)
function latinChars($str) {
  
$str ereg_replace('ç''c'$str);
  
$str ereg_replace('ğ''g'$str);
  
$str ereg_replace('ı''i'$str);
  
$str ereg_replace('ö''o'$str);
  
$str ereg_replace('ş''s'$str);
  
$str ereg_replace('ü''u'$str);
  
$str ereg_replace('Ç''C'$str);
  
$str ereg_replace('Ğ''G'$str);
  
$str ereg_replace('İ''I'$str);
  
$str ereg_replace('Ö''O'$str);
  
$str ereg_replace('Ş''S'$str);
  
$str ereg_replace('Ü''U'$str);
  return 
$str;

Teşekkürler =)
pardon bu kodları nereye yerleştiriosun :S
Nepthis şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 1 hafta önce   #7 (permalink)
 
s5prin's Avatar
 
Üyelik Tarihi: 16.12.2006
Yer: istanbul
Yaş: 26
Mesaj: 483
Re: Türkçe karakterleri latin yapmak, UTF8, PHP, strtr

Bir $string içerisinde tüm Türkçe karakterleri, Türkçe karakter olmayan benzer karşılıklarına çevirmek istediğin yere. Bu arada daha kolayını yapmışım;

PHP Code:
$_trSpec = array(
    
'c' => 'ç'
    
'g' => 'ğ'
    
'i' => 'ı'
    
'o' => 'ö'
    
's' => 'ş'
    
'u' => 'ü'
    
'C' => 'Ç'
    
'G' => 'Ğ'
    
'I' => 'İ'
    
'O' => 'Ö'
    
'S' => 'Ş'
    
'U' => 'Ü');
$enChars array_keys($_trSpec);
$trChars array_values($_trSpec);
$string str_replace($trChars$enChars$string); 
__________________
Spoiler:
s5prin şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 1 hafta önce   #8 (permalink)
 
scriptMan's Avatar
 
Üyelik Tarihi: 23.04.2003
Yer: İstanbul
Mesaj: 666
Görsel: 19
Re: Türkçe karakterleri latin yapmak, UTF8, PHP, strtr

Alıntı:
s5prin tarafından gönderilen mesaj: Mesajı Görüntüle
Bir $string içerisinde tüm Türkçe karakterleri, Türkçe karakter olmayan benzer karşılıklarına çevirmek istediğin yere. Bu arada daha kolayını yapmışım;

PHP Code:
$_trSpec = array(
    
'c' => 'ç'
    
'g' => 'ğ'
    
'i' => 'ı'
    
'o' => 'ö'
    
's' => 'ş'
    
'u' => 'ü'
    
'C' => 'Ç'
    
'G' => 'Ğ'
    
'I' => 'İ'
    
'O' => 'Ö'
    
'S' => 'Ş'
    
'U' => 'Ü');
$enChars array_keys($_trSpec);
$trChars array_values($_trSpec);
$string str_replace($trChars$enChars$string); 
Collation'ı latin5_turkish olan bir veritabanına Türkçe karakter girerken herhangi bir çevrim işlemi yapmaya gerek var mı?

senaryomuz;

exec.PHP - işlemi yaptığımız dosya olsun
exec.PHP'nin encoding'i utf8 (w/o signature) olsun
exec.PHP içerisinde bir adet insert sorgusu olsun

exec.PHP
PHP Code:
//veritabanına bağlan vs..
@mysql_query("SET NAMES 'latin5'",$conn);

@
mysql_unbuffered_query("INSERT INTO a_table(field1,field2) VALUES('ışçöğüİŞÇÖĞÜ',5)",$conn); 
Bu yöntem kusursuz bir şekilde Türkçe karakterleri saklıyor zaten.
__________________
http://scriptman.deviantart.com
scriptMan şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 1 hafta önce   #9 (permalink)
 
s5prin's Avatar
 
Üyelik Tarihi: 16.12.2006
Yer: istanbul
Yaş: 26
Mesaj: 483
Re: Türkçe karakterleri latin yapmak, UTF8, PHP, strtr

Veritabanında saklamak diye birşey demedim ki zaten. Ben url yapmak için kullanıyorum.
__________________
Spoiler:
s5prin şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Old 1 hafta önce   #10 (permalink)
 
scriptMan's Avatar
 
Üyelik Tarihi: 23.04.2003
Yer: İstanbul
Mesaj: 666
Görsel: 19
Re: Türkçe karakterleri latin yapmak, UTF8, PHP, strtr

Alıntı:
s5prin tarafından gönderilen mesaj: Mesajı Görüntüle
Veritabanında saklamak diye birşey demedim ki zaten. Ben url yapmak için kullanıyorum.
Tamam yalan söylemişim demek ki Niye bağrıyosun :P
__________________
http://scriptman.deviantart.com
scriptMan şu an çevrimdışı  
Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Spurl'e kaydet! http://reddit.com/submit?url=%url%&title=%title%Wong'e kaydet!Yahoo'ya kaydet!Google'a kaydet!MSN'e kaydet!Facebook'e kaydet!
Mesajdan alıntı yaparak yeni bir cevap ekleyin
Sponsorlu Bağlantılar
Zoque.Forum
Reklam