Aramada TR karakter problemi. Lütfen yardım

0
Onaylı Üye
Üye
Katılım
29 Haziran 2006
Mesajlar
132
Tepki puanı
0
arkadaşlar sitede kullanıcıların konuyla alakalı kelimeler girebileceği bir kısım var. buraya girdikleri kelimeler örneğin "deneme" kelimesi eklendiği zaman, sitede /deneme.html diye bir sayfaya sahip oluyor ve aynı kelimenin girildiğini konular oradan görülebiliyor. site üstündeki arama motoru da bu prensiple çalışıyor. arama yaptırınca bu sayfaya yönleniyor. şimdi asıl sorunum tr karakterlerde... sayfaya tr karakter içeren bir keyword girilirse sayfa adresinde değişim olmuyor.. yani "çağrışım" kelimesi keyword olarak girildiyse, /çağrışım.html olarak sayfa oluşuyor. fakat bu sayfaya içeriğinde tr karakter problemi var ve arama sanki çağrışım kelimesi yazılmış gibi değil de sapır saçma şeyler yazılmış gibi yapıyor. böyle olunca da insanlar istediği sayfaya ulaşamıyor.. acaba bunu çözmek için neler yapabilirim. saygılar...
 
0
Onaylı Üye
Üye
Katılım
11 Ekim 2004
Mesajlar
6,964
Tepki puanı
0
Konum
karavan
Sayfa yapısı olarak utf-8 kullanırsan problem olmaz, ben öyle kullanıyorum sorun olmuyor. Veritabanı ve sayfalarım utf-8..
 
1
Onaylı Üye
Üye
Katılım
24 Ocak 2005
Mesajlar
7,131
Tepki puanı
86
Ploop'un dediği gibi de yapabilirsin. Ama istersen şu şekilde bir yöntemde uygulayabilirsin.

Öncelikle kelmelerin kaydedildiği veritabanında yeni bir bölüm daha oluştur. Onun adına da "kelimeseo" diyebiliriz. Daha sonra kullanıcıların kelime girdiği bölümde bir değişiklik yaparak aşağıdaki kodu kullanarak sayfalarını "çağrışım.html" değil de "cagrisim.html" olarak oluşturursun. daha sonra arama bölümüne de bu id den türkçe karakterlinisini çağırtarak aram yaptırmayı sağlayabilirsin.

PHP:
<?php

function make_url_friendly($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(' ', '"', '&', '&', '\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, 's', $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;
}


// Formdan gelen kelime $kelime şeklinde ise

$kelimeseo = make_url_friendly($kelime); //kullanarak veri tabanına yazdırabilirsin



?>
 
Geri
Üst