• 11-09-2010, 12:05:17
    #1
    Arkadaşlar merhabalar. Benim şöyle bir sorunum var... Php Admin Panelli bir web sitem var. Mysql Databesede eklenen sayfanın başlığı title vs. var. Ben sonuna seo diye bişey ekledim. Ancak Türkçe karakterleri ne yapıp ettiysem bir türlü olmadı. Caps'i aşağıdaki gibi... Türkçe karakterli siliyor.



    Buradan bulduğum bir makale yardımı ile yaptım ancak olmadı. seo.php diye bir php oluşturdum. Oda aşağıda.

    <?php
    /**
     * SEO Fonksiyon
     *
     * @paket Php SEO
     * 
     * Erhan Yakut
     * http://www.yakuter.com
     *
     **/
     
    function seola($s) {
    	$tr = array('ş','Ş','ı','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç',' ','?','Y','y','?','?','.','/');
        $eng = array('s','S','i','I','g','G','u','U','o','O','C','c','-','g','I','i','s','',''); 
    	$s = str_replace($tr,$eng,$s);
    	$s = strtolower($s);
    	$s = preg_replace('/&.+?;/', '', $s);
    	$s = preg_replace('/[^%a-z0-9 _-]/', '', $s);
    	$s = preg_replace('/\s+/', '-', $s);
    	$s = preg_replace('|-+|', '-', $s);
    	$s = trim($s, '-');
    
    	return $s;
    }
    
    //Örnek Kullanım
    echo seola($baslik);
    ?>
    Ana sayfada listelendiği yer değişkenleri ise aşağıda ki gibidir...

        <?php
            $secanasayfa = mysql_query("select * from icerik");
    	$yazanasayfa = mysql_fetch_array($secanasayfa);
    	$anasayfaicerik = $yazanasayfa["anasayfa"];
    	echo $anasayfaicerik."<br>";
    	
    	include("seo.php");
    
    	$secanasayfagoster = mysql_query("select * from sayfa where anasayfagoster=1");
    	while($yazanasayfagoster = mysql_fetch_array($secanasayfagoster)){
    	$anasayfagoster = $yazanasayfagoster["baslik"];
    	$anasayfagosterid = $yazanasayfagoster["id"];
    	$seobaslik = seola($anasayfagoster);
    	echo "<br><a href=\"$seobaslik.html\">$anasayfagoster</a>";
    	}
    	?>
    Link başlığı "Alitalia Hava Yolları Deneme Amaçlı" böyle geliyor. <a href ise alitalia-hava-yollar-deneme-amal.html şeklinde geliyor. Türkçe karakterleri maalesef almıyor. Birde sonuna ne yapıp ettiysem bir türlü id ekleyemedim. Dolayısı ile sayfayıda açmıyor...

    Benim tam olarak yapmak istediğim şey böyle... alitalia-hava-yollari-deneme-amacli-1.html

    Ayrıca .htaccess dosyasının içeriği aşağıdaki gibidir.. Bu arada ne yapıpı ettiysem sonuna -id ekleyemedim.

    RewriteRule ^(.*).html$ sayfa.php?id=$1 [L,NC]
    RewriteRule ^(.*).html$ solmenu.php?id=$1 [L,NC]
    RewriteRule ^(.*).html$ ustmenu.php?id=$1 [L,NC]
  • 11-09-2010, 13:26:11
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    RewriteRule ^([a-z0-9_-]+)-(.*).html$ sayfa.php?id=$1 [L,NC]
    RewriteRule ^([a-z0-9_-]+)-(.*).html$ solmenu.php?id=$1 [L,NC]
    RewriteRule ^([a-z0-9_-]+)-(.*).html$ ustmenu.php?id=$1 [L,NC]
    bu şekilde dener misiniz hocam .htaccess i ?
  • 11-09-2010, 13:47:07
    #3
    maalesef bu olmadı :S Sadece .htacess'i değiştirmem yeterli olacakmı?
  • 11-09-2010, 13:48:55
    #4
    link yapısınıda değiştirmeniz lazım hocam.

    konubasligi-id.html gibi..
  • 11-09-2010, 13:53:23
    #5
    onu tam olarak nasıl yapmam gerekiyor konuya tam hakim olamadığımdan kusura bakmayın... Sorma gereği duyuyorum...
  • 11-09-2010, 13:54:38
    #6
    echo "<br><a href=\"$seobaslik.html\">$anasayfagoster</a>";
    bu kısmı düzenleyin hocam.

    echo "<br><a href=\"$seobaslik-$anasayfagosterid.html\">$anasayfagoster</a>";
  • 11-09-2010, 15:10:19
    #7
    bu türkçe karakter problemini nasıl halledebilriim arkadaşlar...

    Alıntı
    Link başlığı "Alitalia Hava Yolları Deneme Amaçlı" böyle geliyor. <a href ise alitalia-hava-yollar-deneme-amal.html şeklinde geliyor. Türkçe karakterleri maalesef almıyor...
  • 11-09-2010, 15:22:13
    #8
    seo.php ye bunu ekleyin.

    function EtiketDuzenle($etiket){
        $etiket = ereg_replace("&eth;","g",$etiket);
        $etiket = ereg_replace("ü","u",$etiket);
        $etiket = ereg_replace("&thorn;","s",$etiket);
        $etiket = ereg_replace("ö","o",$etiket);
        $etiket = ereg_replace("ç","c",$etiket);
        $etiket = ereg_replace("&ETH;","G",$etiket);
        $etiket = ereg_replace("Ü","U",$etiket);
        $etiket = ereg_replace("&THORN;","S",$etiket);
        $etiket = ereg_replace("Ö","O",$etiket);
        $etiket = ereg_replace("Ç","C",$etiket);
        $etiket = ereg_replace("&yacute;","i",$etiket);
        $etiket = ereg_replace("&Yacute;","I",$etiket);
        $etiket = ereg_replace("[^a-zA-Z0-9]","-",$etiket);
        return $etiket;
    }
    gösterimide aynen şöyle yap.

    echo "<br><a href=\"Etiketduzenle($anasayfagoster).html\">$anasayfagoster</a>";
    RewriteRule ^-(.*) sayfa.php?id=$1&baslik=$2 [L,NC]
    yazarsan şöyler bir link elde edersin...

    -1-alitalia-hava-yollari-deneme-amacli.html
  • 11-09-2010, 15:25:23
    #9
    quietman adlı üyeden alıntı: mesajı görüntüle
    bu türkçe karakter problemini nasıl halledebilriim arkadaşlar...
    seo fonksiyonuzdan kaynaklı bir sorun. Dilerseniz aşağıdaki fonksiyonu kullanabilirsiniz.

    function seola($url)
    {
    	$trharf=array("İ","Ş"," ","Ü","Ç","Ğ","Ö","ı","ş","ü","ç","ğ","ö");
    	$trharfdegis=array("I","S","-","U","C","G","O","i","s","u","c","g","o");
    	$url=str_replace($trharf,$trharfdegis,$url);
    	$url=preg_replace("@[^A-Za-z0-9\-_]+@i","",$url);
    	$url = trim($url);
    	$url = strtolower($url);
    	$find = array('<b>', '</b>');
    	$url = str_replace ($find, '', $url);
    	$url = preg_replace('/<(\/{0,1})img(.*?)(\/{0,1})\>/', 'image', $url);
    	$find = array(' ', '&quot;', '&amp;', '&', '\r\n', '\n', '/', '\\', '+', '<', '>');
    	$url = str_replace ($find, '-', $url);
    	$find = array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ë', 'Ê');
    	$url = str_replace ($find, 'e', $url);
    	$find = array('í', 'ì', 'î', 'ï', 'I', 'Í', 'Ì', 'Î', 'Ï');
    	$url = str_replace ($find, 'i', $url);
    	$find = array('ó', 'ö', 'Ö', 'ò', 'ô', 'Ó', 'Ò', 'Ô');
    	$url = str_replace ($find, 'o', $url);
    	$find = array('á', 'ä', 'â', 'à', 'â', 'Ä', 'Â', 'Á', 'À', 'Â');
    	$url = str_replace ($find, 'a', $url);
    	$find = array('ú', 'ü', 'Ü', 'ù', 'û', 'Ú', 'Ù', 'Û');
    	$url = str_replace ($find, 'u', $url);
    	$find = array('ç', 'Ç');
    	$url = str_replace ($find, 'c', $url);
    	$find = array('?', '!', '$', '#', '+');
    	$url = str_replace ($find, '-', $url);
    	$find = array('ğ', 'Ğ');
    	$url = str_replace ($find, 'g', $url);
    	$find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
    	$repl = array('', '-', '');
    	$url = preg_replace ($find, $repl, $url);
    	$url = str_replace('--', '-', $url);
    	return $url;
    }