• 28-10-2014, 12:30:52
    #1
    Herkese merhaba,

    Ben bir yabancı PHP dilli blog scripti kullanmaya başladım. Scriptin kendinden seo ayarı var fakat türkçe karakter olarak link alıyor. yani şöyle ki;

    konu başlığı "üzüm şarabı" ise bunu /post/3/üzüm-şarabı.html şeklinde alıyor.
    böyle olduğunda da yazıya ulaşılamıyor.

    fakat şöyle link olduğunda ulaşılıyor /index.php?page=posts&post_id=3

    sizce sorun nerede yardımcı olur musunz?

    site adı: erkinunlu.com.tr


    Bu linki: index.php?page=posts&post_id=3
    Bu hale getirmek istiyorum: uzum-sarabi.html
  • 28-10-2014, 16:28:18
    #2
    seo linki yapan fonksiyondaki türkçe karakterleri türkçe olmayan hale çevirmeniz lazım.
  • 28-10-2014, 16:37:07
    #3
    str_replace ile türkçe karekteri çevirin hocam ş=s ı=i ö=o vsvs gibi
  • 28-10-2014, 16:40:39
    #4
    digiklan adlı üyeden alıntı: mesajı görüntüle
    seo linki yapan fonksiyondaki türkçe karakterleri türkçe olmayan hale çevirmeniz lazım.
    teirabilisim adlı üyeden alıntı: mesajı görüntüle
    str_replace ile türkçe karekteri çevirin hocam ş=s ı=i ö=o vsvs gibi
    hocam işte onu nasıl yapacağımı bilmiyorum yardımcı olur musunuz?
  • 28-10-2014, 16:55:19
    #5
    function seo($s) {
    $tr = array('ş','Ş','ı','I','İ','ğ','Ğ','ü','Ü', 'ö','Ö','Ç','ç','(',')','/',':',',');
    $eng = array('s','s','i','i','i','g','g','u','u','o','o', 'c','c','','','-','-','');
    $s = str_replace($tr,$eng,$s);
    $s = strtolower($s);
    $s = preg_replace('/&.+?;/', '', $s);
    $s = preg_replace('/\s+/', '-', $s);
    $s = preg_replace('|-+|', '-', $s);
    $s = preg_replace('/#/', '', $s);
    $s = str_replace('.', '', $s);
    $s = trim($s, '-');
    return $s;
    }

    Kullanımı :

    $seo_link = seo($link);
  • 28-10-2014, 16:56:11
    #6
    AzapHG adlı üyeden alıntı: mesajı görüntüle
    Herkese merhaba,

    Ben bir yabancı PHP dilli blog scripti kullanmaya başladım. Scriptin kendinden seo ayarı var fakat türkçe karakter olarak link alıyor. yani şöyle ki;

    konu başlığı "üzüm şarabı" ise bunu /post/3/üzüm-şarabı.html şeklinde alıyor.
    böyle olduğunda da yazıya ulaşılamıyor.

    fakat şöyle link olduğunda ulaşılıyor /index.php?page=posts&post_id=3

    sizce sorun nerede yardımcı olur musunz?

    site adı: erkinunlu.com.tr


    Bu linki: index.php?page=posts&post_id=3
    Bu hale getirmek istiyorum: uzum-sarabi.html

    function SEO($Deger)
    	{
    		$tr = array('ş','Ş','ı','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç','%');
    		$eng = array('s','s','i','i','g','g','u','u','o','o','c','c','');
    		$Deger = str_replace($tr,$eng,$Deger);
    		$Deger = strtolower($Deger);
    		$Deger = preg_replace('/&.+?;/', '', $Deger);
    		$Deger = preg_replace('/[^%a-z0-9 _-]/', '', $Deger);
    		$Deger = preg_replace('/\s+/', '-', $Deger);
    		$Deger = preg_replace('|-+|', '-', $Deger);
    		$Deger = trim($Deger, '-');
    		return $Deger;
    	}
    üstteki fonksiyonu tanımladıktan sonra aşağıdaki şekilde kullanabilirsiniz.

    <?php
    $link = 'Türkçe Karakter İçeren Yazı';
    $temizle_link = SEO($link);
    
    echo $temizle_link;
    ?>
    bu kodun çıktısı turkce-karakter-iceren-yazi olacaktır.
  • 28-10-2014, 17:08:56
    #7
    teirabilisim adlı üyeden alıntı: mesajı görüntüle
    function seo($s) {
    $tr = array('ş','Ş','ı','I','İ','ğ','Ğ','ü','Ü', 'ö','Ö','Ç','ç','(',')','/',':',',');
    $eng = array('s','s','i','i','i','g','g','u','u','o','o', 'c','c','','','-','-','');
    $s = str_replace($tr,$eng,$s);
    $s = strtolower($s);
    $s = preg_replace('/&amp;amp;amp;amp;amp;amp;amp;amp;amp;.+?;/', '', $s);
    $s = preg_replace('/\s+/', '-', $s);
    $s = preg_replace('|-+|', '-', $s);
    $s = preg_replace('/#/', '', $s);
    $s = str_replace('.', '', $s);
    $s = trim($s, '-');
    return $s;
    }

    Kullanımı :

    $seo_link = $seo($link);
    yasarkemaldag adlı üyeden alıntı: mesajı görüntüle
    function SEO($Deger)
    	{
    		$tr = array('ş','Ş','ı','İ','ğ','Ğ','ü','Ü','ö','Ö','Ç','ç','%');
    		$eng = array('s','s','i','i','g','g','u','u','o','o','c','c','');
    		$Deger = str_replace($tr,$eng,$Deger);
    		$Deger = strtolower($Deger);
    		$Deger = preg_replace('/&amp;amp;amp;amp;amp;amp;amp;amp;amp;.+?;/', '', $Deger);
    		$Deger = preg_replace('/[^%a-z0-9 _-]/', '', $Deger);
    		$Deger = preg_replace('/\s+/', '-', $Deger);
    		$Deger = preg_replace('|-+|', '-', $Deger);
    		$Deger = trim($Deger, '-');
    		return $Deger;
    	}
    üstteki fonksiyonu tanımladıktan sonra aşağıdaki şekilde kullanabilirsiniz.

    <?php
    $link = 'Türkçe Karakter İçeren Yazı';
    $temizle_link = SEO($link);
    
    echo $temizle_link;
    ?>
    bu kodun çıktısı turkce-karakter-iceren-yazi olacaktır.
    hocam ikinize de çok teşekkürler fakat ben bu kodları bulmuştam ancak nereye ve nasıl ekleyeceğimi çözemedim ?
  • 28-10-2014, 17:36:01
    #8
    AzapHG adlı üyeden alıntı: mesajı görüntüle
    hocam ikinize de çok teşekkürler fakat ben bu kodları bulmuştam ancak nereye ve nasıl ekleyeceğimi çözemedim ?
    her sayfada include ettiğiniz bir php dosyası varsa (ayar.php, baglanti.php, fonksiyonlar.php vb) bu dosyanın içinde bir yere yapıştırıp direk kullanabilirsiniz. eğer öyle bir dosyanız yoksa bu fonksiyonu kullanacağınız php dosyasında herhangi bir yere örneğin kodların en üstüne <?php tagının altına yapıştırın sonra kullanmak istediğiniz yerde örnekteki gibi kullanabilirsiniz.