31 Ekim 2010 Pazar

URL'deki Türkçe Karakterleri düzeltmek

Arama motorları URL deki içeriğe çok önem veriyorlar. Böyle olunca da web yazılımlarında ve sitelerinde URL ler ile oynama yapılabiliyor. Apache'de mod_rewrite kullanılarak URL'leri tekrardan yazabilmek mümkün. Bunu daha başka bir yazımda değineceğim. URL'lerde türkçe karakter olması zaten çok sonradan çıkan bir şey. Olmaması arama motoru optimizasyonu açısından önemli.

Burada yazmış olduğum bir fonksiyon var. türkçe karakterleri, boşlukları, alt tire (_), tırnak, vs... gibi karakterleri standart URL kurallarına göre düzenlemekte.

http://www.deneme.com/kırk küp kırkı da kulpu kırık küp.html diye bir linkiniz var.
bunun www.deneme.com ile .html arasında kalan kısmı optimize etmek istiyoruz. Bu kısmı fonksiyona sokarız.
Giri : kırk küp kırkı da kulpu kırık küp
Çıktı : kirk-kup-kirki-da-kulpu-kirik-kup
başına ve sonuna istediğimiz şeyi koyup linklerimizi oluşturabiliriz.
http:///www.deneme.com/kirk-kup-kirki-da-kulpu-kirik-kup.html şekline her arama motorunun rahatlıkla anlayabileceği hale dönüştürmüş oluruz.


/*Code*/

/**
     * Url'deki karakterleri düzeltir.
     *
     * @author Emre MACİT 15.04.2008
     *
     * @param string $string
     * @param bool $onlyChars
     * @return string
     */
    function correctChars($string , $onlyChars = false){
        $string = str_replace ( "ç", "c", $string );
        $string = str_replace ( "Ç", "C", $string );
        $string = str_replace ( "ğ", "g", $string );
        $string = str_replace ( "Ğ", "G", $string );
        $string = str_replace ( "ı", "i", $string );
        $string = str_replace ( "İ", "I", $string );
        $string = str_replace ( "Ş", "S", $string );
        $string = str_replace ( "ş", "s", $string );
        $string = str_replace ( "ü", "u", $string );
        $string = str_replace ( "Ü", "U", $string );
        $string = str_replace ( "ö", "o", $string );
        $string = str_replace ( "Ö", "O", $string );
        if($onlyChars) {
            return $string;
        }
        $string = str_replace ( "_", "-", $string );
        $string = str_replace ( " ", "-", $string );
        $string = str_replace ( ",", "-", $string );
        $string = str_replace ( "'", "", $string );
        $string = str_replace ( "\"", "", $string );
        $strCharCount = strlen ( $string );

        for($i = 0; $i < $strCharCount;) {
            if (! preg_match ( "/[0-9a-zA-Z\-\_]/", $string [$i] )) {
                for($j = $i; $j < $strCharCount - 1; $j ++) {
                    $string [$j] = $string [$j + 1];
                }
                $string = substr ( $string, 0, - 1 );
                $strCharCount --;
            } else {
                $i ++;
            }
        }
        $string = str_replace ( "--", "-", $string );
        $string = str_replace ( "--", "-", $string );
        $string = str_replace ( "--", "-", $string );
        return $string;
    }

Hiç yorum yok:

Yorum Gönder

Yorumunuzu esirgemeyiniz..