• 28-01-2007, 03:26:02
    #10
    Misafir
    Birde phpde iconv vardır, araştırsan utf-8 ve 8859-9 arasında çevirme yapar, tabi ie de sorunludur gene, ff de düzgündür.

    En güzel aşşağıdaki koddur.

    ama scriptte hata var az önce kendi sitemde denedim büyük Ğ ve büyük Ş de


    düzgünü ise [test ette sorun varmı diye hocam, burda basmayabilir o karakteri]


    function tr($text){
    $tr_yanlis = array (
    'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
    'Ç','ç','�','ğ','İ','ı','Ö','ö','�','ş','Ü','ü',
    'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
    'Ç','&ccedil','Ö','ö','Ü','ü',
    'Ð','ð','Ý','ý','Þ','þ',
    'Ð','ð','Ý','ý','Þ','þ');
    //"'", '"'
    $tr_dogru = array  (
    'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
    'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
    'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
    'Ç','ç','Ö','ö','Ü','ü',
    'Ğ','ğ','İ','ı','Ş','ş',
    'Ğ','ğ','İ','ı','Ş','ş');
    //''','"'
    $text = str_replace($tr_yanlis, $tr_dogru, $text); 
               return $text ;
    }
  • 28-01-2007, 03:39:19
    #11
    Local'e iconv desteği var ama yazdığım kişinin hostundaki PHP'de iconv desteği yok. Şu an bu yazdığından daha etkili çözümler aramak peşindeyim. Mesela bir tane buldum PHP Manuel geliştirici notlarında:
    function str_encode ($string,$to="iso-8859-9",$from="utf8") {
       if($to=="iso-8859-9" && $from=="utf8"){
           $str_array = array(
           chr(196).chr(177) => chr(253),
           chr(196).chr(176) => chr(221),
           chr(195).chr(182) => chr(246),
           chr(195).chr(150) => chr(214),
           chr(195).chr(167) => chr(231),
           chr(195).chr(135) => chr(199),
           chr(197).chr(159) => chr(254),
           chr(197).chr(158) => chr(222),
           chr(196).chr(159) => chr(240),
           chr(196).chr(158) => chr(208),
           chr(195).chr(188) => chr(252),
           chr(195).chr(156) => chr(220)
           );
           return str_replace(array_keys($str_array), array_values($str_array), $string);
    
       }
       return $string;
    }
    Pek farkı yok aslında senin önerdiğinden, bunda da bazı karakterler sorunlu. Başka bir daha buldum onu şimdi deniyorum, hem sadece Türkçe için değil diğer diller için de desteği var. Fonksiyon utf-8'den Unicod'a dönüşüm yapıyor.
    function utf2html ($utf2html_string)
    {
      $utf2html_retstr = "";
      for ($utf2html_p=0; $utf2html_p<strlen($utf2html_string); $utf2html_p++):
       $utf2html_c = substr ($utf2html_string, $utf2html_p, 1);
       $utf2html_c1 = ord ($utf2html_c);
       if ($utf2html_c1>>5 == 6): // 110x xxxx, 110 prefix for 2 bytes unicode
         $utf2html_p++;
           $utf2html_t = substr ($utf2html_string, $utf2html_p, 1);
         $utf2html_c2 = ord ($utf2html_t);
         $utf2html_c1 &= 31; // remove the 3 bit two bytes prefix
         $utf2html_c2 &= 63; // remove the 2 bit trailing byte prefix
         $utf2html_c2 |= (($utf2html_c1 & 3) << 6); // last 2 bits of c1 become first 2 of c2
         $utf2html_c1 >>= 2; // c1 shifts 2 to the right
           $utf2html_n = dechex($utf2html_c1).dechex($utf2html_c2);
         $utf2html_retstr .= sprintf ("&#%03d;", hexdec($utf2html_n));
       else:
         $utf2html_retstr .= $utf2html_c;
       endif;
      endfor;
      return $utf2html_retstr;
    }
    PHP: utf8_decode - Manual konuyla ilgili bayağı kod var, aynı şekilde utf8_encode başlığında da. Bizim Türklerin konuyla bayağı ilgili olması orada da gözlerden kaçmıyor.
  • 28-01-2007, 03:48:29
    #12
    Bir önceki yazdığımı düzeltiyorum, 1. verdiğim, sadece Türkçe için olan gayet güzel çalıştı, ben bir yerlerde eksik yapmıştım. İkincisi de kendi görevini gayet güzel yerine getirdi, yani Unicode dönüşümü ve hem FF hem de IE gayet düzgün gösteriyor. Ama malum eski tarayıcılar (bayağı eski olanlar) Unicode'tan pek çakmıyor, googlebot ve diğerleri anlar mı bilinmez.
  • 28-01-2007, 03:49:01
    #13
    Misafir
    3 üncü dünya ülkesi değilizki, php bize destek vermezse söke söke destek yazarız Türklerdeki azim çoğu millette yoktur.

    aslında str encode daha iyi duruyor.

    Ben sana vediğim kodu kullanıyorum ve şu anda problemsizim arama konusunda.
  • 28-01-2007, 04:03:09
    #14
    Haymac adlı üyeden alıntı: mesajı görüntüle
    3 üncü dünya ülkesi değilizki, php bize destek vermezse söke söke destek yazarız Türklerdeki azim çoğu millette yoktur.
    aslında str encode daha iyi duruyor.
    Ben sana vediğim kodu kullanıyorum ve şu anda problemsizim arama konusunda.
    str_encode Türkçe bir site için elbette ki daha mantıklı, ama gel gör ki sitenin dili hem Türkçe, hem Fransızca, hem İspanyolca vs. olduğunda her biri için ayrı ayrı str_encode yazmak yapılacak iş değil.