• 04-05-2008, 20:55:52
    #1
    Merhaba bu akşamki 2. sorunumla karşınızdayım . Yazdığım sözlük script'inde Türkçe'den İngilizce'ye çeviri yaparken Türkçe karakterlerde sorun yaşıyorum. Örneğin:

    Kullanıcı Ağaç yazarsa kayıt bulunamadı hatası veriyor. Ama Agac yazarsa Ağaç'ın karşılığını veriyor. Veritabanında sorun yok ve Ağaç olarak gözüküyor. Bunu replace ile göndermeyi denedim fakat nedense olmuyor.
    function replace_tr($text) {
    $text = trim($text);
    $search = array('Ç','ç','Ğ','ğ','ı','İ','Ö','ö','Ş','ş','Ü','ü',' ');
    $replace = array('C','c','G','g','i','I','O','o','S','s','U','u','-');
    $new_text = str_replace($search,$replace,$text);
    return $new_text;
    }
    $_POST[sozcuk]=$sozcuk;
    $ysozcuk = replace_tr($sozcuk);
    Şeklinde kullanıyorum. Karakterlerin neden değişmediğini ve ne yapabileceğimi biri açıklayabilirse sevinirim.

    Şimdiden teşekkürler.
  • 04-05-2008, 21:16:41
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Fonksiyonda bir sorun yok.Bu fonksiyon "Ağaç" ı "Agac" yapar.Ama

    $_POST[sozcuk]=$sozcuk;

    yerine

    $sozcuk = $_POST["sozcuk"];

    olmalı.
  • 04-05-2008, 21:25:27
    #3
    Dediğinizi yaptım AdsenseKolik ama hiç bir şey değişmedi.
  • 04-05-2008, 22:01:54
    #4
    istersen şu fonksiyonu dene çok daha kapsamlı

    function tr($text){
    
    $text = trim($text);
    $text = strtolower($text);
    
       
    
        $find = array('<b>', '</b>');
        $text = str_replace ($find, '', $text);
    
        $find = array(' ', '&quot;', '&amp;', '&', '\r\n', '\n', '/', '\\', '+', '<', '>');
        $text = str_replace ($find, '-', $text);
    
        $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
        $text = str_replace ($find, '', $text);
    
    
        
    
    
    $tr_yanlis = array (
    'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
    'Ç','ç','Äz','ÄŸ','İ','ı','Ö','ö','Åz','ÅŸ','Ü','ü',
    'Ç','ç','Ğ','ğ','İ','ı','Ö','ö','Ş','ş','Ü','ü',
    '&amp;Ccedil;','&amp;ccedil','&Ouml;','&ouml;','&Uuml;','&uuml;',
    '&ETH;','&eth;','&Yacute;','&yacute;','&THORN;','&thorn;',
    '&ETH;','&eth;','&Yacute;','&yacute;','&THORN;','&thorn;');
    //"'", '"'
    $tr_dogru = array  (
    'C','c','G','g','i','i','O','o','S','s','U','u',
    'C','c','G','g','i','i','O','o','S','s','U','u',
    'C','c','G','g','i','i','O','o','S','s','U','u',
    'C','c','O','o','U','u',
    'G','g','i','i','S','s',
    'G','g','i','i','S','s');
    //'&apos;','&quot;'
    
    
    
    $text = str_replace($tr_yanlis, $tr_dogru, $text); 
    
    $text=str_replace(" ","-",trim($text));
    
    $text=preg_replace("@[^A-Za-z0-9\-_ĞÜŞİÖÇğüşıöç]+@i","",$text); 
    $text=ereg_replace(" +"," ",trim($text)); 
    $text=ereg_replace("[-]+","-",$text); 
    $text=ereg_replace("[_]+","_",$text); 
    
               return $text ; 
    }
  • 05-05-2008, 00:21:17
    #5
    Teşekkürler AdsenseKolik bu sefer oldu. Hem de baya iyi oldu. +rep .