• 11-07-2010, 19:55:27
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Bir arkadaşımız SEO URLlerde Boşluk atmakla ilgili bir konu açmıştı. Bende türkçe karakter sorununu ortadan kaldırabileceğiniz ufak bir kod parçası paylaşmak istedim

    $trmetin değişkenini oluşturmak istediğiniz türkçe karakter içeren bir metin olarak atadığınızda php yorumlayıcısı size tükçe karakterleri düzeltip boşluklarında yerine ( - ) atıp veriyor. Umarım işinize yarar.

    <?php
    
    $trmetin = "BÜYÜK küçük Şunun Çıktısını Al, Üstün Ödül Oğul!";
    
    echo("<b>Düzenlemeden önce:</b> $trmetin <br /><hr> ");
    
    $trkucukmetin = strtolower("$trmetin"); 
    
    echo("<b>Harfler Küçüldü:</b> $trkucukmetin <br /><hr> ");
    
    
    $metin = str_replace("ş","s",$trkucukmetin);
    $metin = str_replace("ç","c",$metin);
    $metin = str_replace("ü","u",$metin);
    $metin = str_replace("ı","i",$metin);
    $metin = str_replace("ğ","g",$metin);
    $metin = str_replace("ö","o",$metin);
    $metin = str_replace(",","",$metin);
    $metin = str_replace("!","",$metin);
    $metin = str_replace(".","",$metin);
    
    $encodemetin  = urlencode($metin);
    
    $seometin = str_replace("+","-",$encodemetin);
    
    echo ("<b>Sonuç:</b> $seometin");
    ?>
    Tekrar "$encodemetin = urlencode($metin);" kullanmamın sebebi metin içinde sorun çakarabilecek çeşitli karakterleri zararsız hale getirmektir.
  • 14-07-2010, 17:35:09
    #2
    daha temiz bir fonksiyon vereyim bende konu altına

    function sefyap ( $fonktmp ) {
        $returnstr = "";
        $turkcefrom = array("/Ğ/","/Ü/","/Ş/","/İ/","/Ö/","/Ç/","/ğ/","/ü/","/ş/","/ı/","/ö/","/ç/");
        $turkceto   = array("G","U","S","I","O","C","g","u","s","i","o","c");
        $fonktmp = preg_replace("/[^0-9a-zA-ZÄzÜŞİÖÇğüşıöç]/"," ",$fonktmp);
        // Türkçe harfleri ingilizceye çevir
        $fonktmp = preg_replace($turkcefrom,$turkceto,$fonktmp);
        // Birden fazla olan boşlukları tek boşluk yap
        $fonktmp = preg_replace("/ +/"," ",$fonktmp);
        // Boşukları - işaretine çevir
        $fonktmp = preg_replace("/ /","-",$fonktmp);
        // Tüm beyaz karekterleri sil
        $fonktmp = preg_replace("/\s/","",$fonktmp);
        // Karekterleri küçült
        $fonktmp = strtolower($fonktmp);
        // Başta ve sonda - işareti kaldıysa yoket
        $fonktmp = preg_replace("/^-/","",$fonktmp);
        $fonktmp = preg_replace("/-$/","",$fonktmp);
        $returnstr = $tmpdate . $fonktmp;
        return $returnstr;
    }//sef url için fonksiyon
    • Kocaelim
    • MuminYazar
    Kocaelim ve MuminYazar bunu beğendi.
    2 kişi bunu beğendi.
  • 14-07-2010, 17:38:13
    #3
    Teşekkürler sizinkisi daha kullanışlı gözüküyor.
  • 15-07-2010, 13:00:08
    #4
    teşekkürler arkadaşlar.
  • 31-03-2016, 04:44:44
    #5
    $returnstr = $tmpdate . $fonktmp; bu satırda hata veriyor onu kaldırınca düzeliyor.
    Teşekkürler
  • 21-12-2023, 21:47:13
    #6
    Genelde kullandığım fonksiyon daha kapsayıcı olacaktır.

    'method' => function($string, $separator = '-') {
            $_transliteration = ["/ö|œ/" => "o",
                "/ü/" => "u",
                "/Ä/" => "A",
                "/Ü/" => "U",
                "/Ö/" => "O",
                "/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/" => "A",
                "/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/" => "a",
                "/Ç|Ć|Ĉ|Ċ|Č/" => "C",
                "/ç|ć|ĉ|ċ|č/" => "c",
                "/Ð|Ď|Đ/" => "D",
                "/ð|ď|đ/" => "d",
                "/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/" => "E",
                "/è|é|ê|ë|ē|ĕ|ė|ę|ě/" => "e",
                "/Ĝ|Ğ|Ġ|Ģ/" => "G",
                "/ĝ|ğ|ġ|ģ/" => "g",
                "/Ĥ|Ħ/" => "H",
                "/ĥ|ħ/" => "h",
                "/Ì|Í|Î|Ï|Ĩ|Ī| Ĭ|Ǐ|Į|İ/" => "I",
                "/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/" => "i",
                "/Ĵ/" => "J",
                "/ĵ/" => "j",
                "/Ķ/" => "K",
                "/ķ/" => "k",
                "/Ĺ|Ļ|Ľ|Ŀ|Ł/" => "L",
                "/ĺ|ļ|ľ|ŀ|ł/" => "I",
                "/Ñ|Ń|Ņ|Ň/" => "N",
                "/ñ|ń|ņ|ň|ʼn/" => "n",
                "/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/" => "O",
                "/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/" => "o",
                "/Ŕ|Ŗ|Ř/" => "R",
                "/ŕ|ŗ|ř/" => "r",
                "/Ś|Ŝ|Ş|Ș|Š/" => "S",
                "/ś|ŝ|ş|ș|š|ſ/" => "s",
                "/Ţ|Ț|Ť|Ŧ/" => "T",
                "/ţ|ț|ť|ŧ/" => "t",
                "/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/" => "U",
                "/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/" => "u",
                "/Ý|Ÿ|Ŷ/" => "Y",
                "/ý|ÿ|ŷ/" => "y",
                "/Ŵ/" => "W",
                "/ŵ/" => "w",
                "/Ź|Ż|Ž/" => "Z",
                "/ź|ż|ž/" => "z",
                "/Æ|Ǽ/" => "E",
                "/ß/" => "s",
                "/IJ/" => "J",
                "/ij/" => "j",
                "/Œ/" => "E",
                "/ƒ/" => ""];
            $quotedReplacement = preg_quote($separator, '/');
            $merge = [
                '/[^\s\p{Zs}\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu' => ' ',
                '/[\s\p{Zs}]+/mu' => $separator,
                sprintf('/^[%s]+|[%s]+$/', $quotedReplacement, $quotedReplacement) => '',
            ];
            $map = $_transliteration + $merge;
            unset($_transliteration);
            return preg_replace(array_keys($map), array_values($map), $string);
        },
  • 21-12-2023, 23:58:57
    #7
    s3rcanuy5al adlı üyeden alıntı: mesajı görüntüle
    Genelde kullandığım fonksiyon daha kapsayıcı olacaktır.

    'method' => function($string, $separator = '-') {
            $_transliteration = ["/ö|œ/" => "o",
                "/ü/" => "u",
                "/Ä/" => "A",
                "/Ü/" => "U",
                "/Ö/" => "O",
                "/À|Á|Â|Ã|Å|Ǻ|Ā|Ă|Ą|Ǎ/" => "A",
                "/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª/" => "a",
                "/Ç|Ć|Ĉ|Ċ|Č/" => "C",
                "/ç|ć|ĉ|ċ|č/" => "c",
                "/Ð|Ď|Đ/" => "D",
                "/ð|ď|đ/" => "d",
                "/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě/" => "E",
                "/è|é|ê|ë|ē|ĕ|ė|ę|ě/" => "e",
                "/Ĝ|Ğ|Ġ|Ģ/" => "G",
                "/ĝ|ğ|ġ|ģ/" => "g",
                "/Ĥ|Ħ/" => "H",
                "/ĥ|ħ/" => "h",
                "/Ì|Í|Î|Ï|Ĩ|Ī| Ĭ|Ǐ|Į|İ/" => "I",
                "/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı/" => "i",
                "/Ĵ/" => "J",
                "/ĵ/" => "j",
                "/Ķ/" => "K",
                "/ķ/" => "k",
                "/Ĺ|Ļ|Ľ|Ŀ|Ł/" => "L",
                "/ĺ|ļ|ľ|ŀ|ł/" => "I",
                "/Ñ|Ń|Ņ|Ň/" => "N",
                "/ñ|ń|ņ|ň|ʼn/" => "n",
                "/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ/" => "O",
                "/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º/" => "o",
                "/Ŕ|Ŗ|Ř/" => "R",
                "/ŕ|ŗ|ř/" => "r",
                "/Ś|Ŝ|Ş|Ș|Š/" => "S",
                "/ś|ŝ|ş|ș|š|ſ/" => "s",
                "/Ţ|Ț|Ť|Ŧ/" => "T",
                "/ţ|ț|ť|ŧ/" => "t",
                "/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ/" => "U",
                "/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ/" => "u",
                "/Ý|Ÿ|Ŷ/" => "Y",
                "/ý|ÿ|ŷ/" => "y",
                "/Ŵ/" => "W",
                "/ŵ/" => "w",
                "/Ź|Ż|Ž/" => "Z",
                "/ź|ż|ž/" => "z",
                "/Æ|Ǽ/" => "E",
                "/ß/" => "s",
                "/IJ/" => "J",
                "/ij/" => "j",
                "/Œ/" => "E",
                "/ƒ/" => ""];
            $quotedReplacement = preg_quote($separator, '/');
            $merge = [
                '/[^\s\p{Zs}\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]/mu' => ' ',
                '/[\s\p{Zs}]+/mu' => $separator,
                sprintf('/^[%s]+|[%s]+$/', $quotedReplacement, $quotedReplacement) => '',
            ];
            $map = $_transliteration + $merge;
            unset($_transliteration);
            return preg_replace(array_keys($map), array_values($map), $string);
        },
    Merhaba Hocam
    nasıl kullanıyoruz, link olarak örnek verebilirmisin hocam