Giriş Yap / Kayıt Ol

WM Aracı'na üyelikler tekrar açıldı! Kayıt olmak için TIKLAYIN!

1Beğeni
  • 1 Yazan Decimas

Cevap Yaz Favorilerime Ekle
Seçenekler Stil
Geri Git   Forum > > PHP

Merhaba Arkadaşlar Url Türkçe Karakter Sorunu Çözümü Lazım

  #1  
Okunmamış 29 Mayıs 2018, 23:19
Avatar Seçilmemiş
WM Aracı
 
Üyelik Tarihi: 31 Ocak 2016
Yaş / Cinsiyet: 35 / Erkek
Meslek: webmaster
Konum: Konya
Ad, Soyad: Er... Be...
Mesajlar: 268
Beğeniler: 59 / 10
Ticaret: 13, 100%
S.a yazılımcı arkadaşlarım;

Kod:
function get_url_text($string, $length = 10) {
    $string = htmlspecialchars_decode($string, ENT_QUOTES);
    $string = preg_replace('/[^\\pL\d]+/u', '-', $string);
    $string = trim($string, '-');
    $words = explode("-",$string);
    if(count($words) > $length) {
        $string = "";
        for($i = 0; $i < $length; $i++) {
            $string .= "-".$words[$i];
        }
        $string = trim($string, '-');
    }
    return $string;
}
Buraya Türkçe karakterler sorununu halledecek şekilde bir işlem yapmam gerek ama nasıl yapabilirim?

Şöyle bir karakter düzenleme olacak;

Kod:
$string = strtr($string, array(
            '"' => '',
            "'" => '',
            "Ö" => "o",
            "ö" => "o",
            "C" => "c",
            "c" => "c",
            "Ğ" => "g",
            "ğ" => "g",
            "Ş" => "s",
            "ş" => "s",
            "Ü" => "u",
            "ü" => "u",
            "İ" => "i",
            "ı" => "i",
            "Ç" => "c",
            "ç" => "c",
            "é" => "i",
            "â" => "a",
            "Ê" => "e",
            "Â" => "a",
            "?" => "_",
            "*" => "_",
            "." => "_",
            "," => "_",
            ";" => "_",
            ")" => "_",
            "(" => "_",
            "{" => "_",
            "}" => "_",
            "[" => "_",
            "]" => "_",
            "!" => "_",
            "+" => "_",
            "%" => "_",
            "&" => "_",
            "#" => "_",
            "$" => "_",
            "=" => "_",
            "ê" => "e",
            "." => "-"
        ));
Gibi basit birşeydir belki ama anlayamadım. Soruyorum. Cevap verene şimdiden Allah Razı olsun.
  #2  
Okunmamış 29 Mayıs 2018, 23:45
Avatar Seçilmemiş
WM Aracı
 
Üyelik Tarihi: 31 Ocak 2016
Yaş / Cinsiyet: 35 / Erkek
Meslek: webmaster
Konum: Konya
Ad, Soyad: Er... Be...
Mesajlar: 268
Beğeniler: 59 / 10
Ticaret: 13, 100%
Kod:
function get_url_text($string, $length = 10) {
    $find = array('Ç', 'Ş', 'Ğ', 'Ü', 'İ', 'Ö', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı', '+', '.', '#');
		$replace = array('c', 's', 'g', 'u', 'i', 'o', 'c', 's', 'g', 'u', 'o', 'i', 'plus', '-', 'sharp');
		$string = strtolower(str_replace($find, $replace, $string));
		$string = preg_replace("@[^A-Za-z0-9\-_\.\+]@i", ' ', $string);
		$string = trim(preg_replace('/\s+/', ' ', $string));
		$string = str_replace(' ', '-', $string);
    $words = explode("-",$string);
    if(count($words) > $length) {
        $string = "";
        for($i = 0; $i < $length; $i++) {
            $string .= "-".$words[$i];
        }
        $string = trim($string, '-');
    }
    return $string;
}
Bu şekilde çözdüm. İnşallah doğrudur
  #3  
Okunmamış 30 Mayıs 2018, 00:09
hsntngr Adlı Üyenin Avatarı
Kontör at
 
Üyelik Tarihi: 21 Eylül 2016
Yaş / Cinsiyet: 27 / Erkek
Meslek: Avukat
Konum: Samsun
Ad, Soyad: Ha... Tı...
Mesajlar: 1.160
Beğeniler: 326 / 99
Ticaret: 3, 100%
PHP- Kodu:
function make_slug($str$options = array()) {
    
// Make sure string is in UTF-8 and strip invalid UTF-8 characters
    
$str mb_convert_encoding((string)$str'UTF-8'mb_list_encodings());

    
$defaults = array(
        
'delimiter' => '-',
        
'limit' => null,
        
'lowercase' => true,
        
'replacements' => array(),
        
'transliterate' => false,
    );

    
// Merge options
    
$options array_merge($defaults$options);

    
$char_map = array(
        
// Latin
        
'À' => 'A''Á' => 'A''Â' => 'A''Ã' => 'A''Ä' => 'A''Å' => 'A''Æ' => 'AE''Ç' => 'C',
        
'È' => 'E''É' => 'E''Ê' => 'E''Ë' => 'E''Ì' => 'I''Í' => 'I''Î' => 'I''Ï' => 'I',
        
'Ğ' => 'D''Ñ' => 'N''Ò' => 'O''Ó' => 'O''Ô' => 'O''Õ' => 'O''Ö' => 'O''Ő' => 'O',
        
'Ø' => 'O''Ù' => 'U''Ú' => 'U''Û' => 'U''Ü' => 'U''Ű' => 'U''İ' => 'Y''Ş' => 'TH',
        
'ß' => 'ss',
        
'à' => 'a''á' => 'a''â' => 'a''ã' => 'a''ä' => 'a''å' => 'a''æ' => 'ae''ç' => 'c',
        
'è' => 'e''é' => 'e''ê' => 'e''ë' => 'e''ì' => 'i''í' => 'i''î' => 'i''ï' => 'i',
        
'ğ' => 'd''ñ' => 'n''ò' => 'o''ó' => 'o''ô' => 'o''õ' => 'o''ö' => 'o''ő' => 'o',
        
'ø' => 'o''ù' => 'u''ú' => 'u''û' => 'u''ü' => 'u''ű' => 'u''ı' => 'y''ş' => 'th',
        
'ÿ' => 'y',
        
// Latin symbols
        
'©' => '(c)',
        
// Greek
        
'Α' => 'A''Β' => 'B''Γ' => 'G''Δ' => 'D''Ε' => 'E''Ζ' => 'Z''Η' => 'H''Θ' => '8',
        
'Ι' => 'I''Κ' => 'K''Λ' => 'L''Μ' => 'M''Ν' => 'N''Ξ' => '3''Ο' => 'O''Π' => 'P',
        
'Ρ' => 'R''Σ' => 'S''Τ' => 'T''Υ' => 'Y''Φ' => 'F''Χ' => 'X''Ψ' => 'PS''Ω' => 'W',
        
'Ά' => 'A''Έ' => 'E''Ί' => 'I''Ό' => 'O''Ύ' => 'Y''Ή' => 'H''Ώ' => 'W''Ϊ' => 'I',
        
'Ϋ' => 'Y',
        
'α' => 'a''β' => 'b''γ' => 'g''δ' => 'd''ε' => 'e''ζ' => 'z''η' => 'h''θ' => '8',
        
'ι' => 'i''κ' => 'k''λ' => 'l''μ' => 'm''ν' => 'n''ξ' => '3''ο' => 'o''π' => 'p',
        
'ρ' => 'r''σ' => 's''τ' => 't''υ' => 'y''φ' => 'f''χ' => 'x''ψ' => 'ps''ω' => 'w',
        
'ά' => 'a''έ' => 'e''ί' => 'i''ό' => 'o''ύ' => 'y''ή' => 'h''ώ' => 'w''ς' => 's',
        
'ϊ' => 'i''ΰ' => 'y''ϋ' => 'y''ΐ' => 'i',
        
// Turkish
        
'Ş' => 'S''İ' => 'I''Ç' => 'C''Ü' => 'U''Ö' => 'O''Ğ' => 'G',
        
'ş' => 's''ı' => 'i''ç' => 'c''ü' => 'u''ö' => 'o''ğ' => 'g',
        
// Russian
        
'А' => 'A''Б' => 'B''В' => 'V''Г' => 'G''Д' => 'D''Е' => 'E''Ё' => 'Yo''Ж' => 'Zh',
        
'З' => 'Z''И' => 'I''Й' => 'J''К' => 'K''Л' => 'L''М' => 'M''Н' => 'N''О' => 'O',
        
'П' => 'P''Р' => 'R''С' => 'S''Т' => 'T''У' => 'U''Ф' => 'F''Х' => 'H''Ц' => 'C',
        
'Ч' => 'Ch''Ш' => 'Sh''Щ' => 'Sh''Ъ' => '''Ы' => 'Y''Ь' => '''Э' => 'E''Ю' => 'Yu',
        
'Я' => 'Ya',
        
'а' => 'a''б' => 'b''в' => 'v''г' => 'g''д' => 'd''е' => 'e''ё' => 'yo''ж' => 'zh',
        
'з' => 'z''и' => 'i''й' => 'j''к' => 'k''л' => 'l''м' => 'm''н' => 'n''о' => 'o',
        
'п' => 'p''р' => 'r''с' => 's''т' => 't''у' => 'u''ф' => 'f''х' => 'h''ц' => 'c',
        
'ч' => 'ch''ш' => 'sh''щ' => 'sh''ъ' => '''ы' => 'y''ь' => '''э' => 'e''ю' => 'yu',
        
'я' => 'ya',
        
// Ukrainian
        
'Є' => 'Ye''І' => 'I''Ї' => 'Yi''Ґ' => 'G',
        
'є' => 'ye''і' => 'i''ї' => 'yi''ґ' => 'g',
        
// Czech
        
'Č' => 'C''Ď' => 'D''Ě' => 'E''Ň' => 'N''Ř' => 'R''Š' => 'S''Ť' => 'T''Ů' => 'U',
        
'Ž' => 'Z',
        
'č' => 'c''ď' => 'd''ě' => 'e''ň' => 'n''ř' => 'r''š' => 's''ť' => 't''ů' => 'u',
        
'ž' => 'z',
        
// Polish
        
'Ą' => 'A''Ć' => 'C''Ę' => 'e''Ł' => 'L''Ń' => 'N''Ó' => 'o''Ś' => 'S''Ź' => 'Z',
        
'Ż' => 'Z',
        
'ą' => 'a''ć' => 'c''ę' => 'e''ł' => 'l''ń' => 'n''ó' => 'o''ś' => 's''ź' => 'z',
        
'ż' => 'z',
        
// Latvian
        
'Ā' => 'A''Č' => 'C''Ē' => 'E''Ģ' => 'G''Ī' => 'i''Ķ' => 'k''Ļ' => 'L''Ņ' => 'N',
        
'Š' => 'S''Ū' => 'u''Ž' => 'Z',
        
'ā' => 'a''č' => 'c''ē' => 'e''ģ' => 'g''ī' => 'i''ķ' => 'k''ļ' => 'l''ņ' => 'n',
        
'š' => 's''ū' => 'u''ž' => 'z'
    
);

    
// Make custom replacements
    
$str preg_replace(array_keys($options['replacements']), $options['replacements'], $str);

    
// Transliterate characters to ASCII
    
if ($options['transliterate']) {
        
$str str_replace(array_keys($char_map), $char_map$str);
    }

    
// Replace non-alphanumeric characters with our delimiter
    
$str preg_replace('/[^\p{L}\p{Nd}]+/u'$options['delimiter'], $str);

    
// Remove duplicate delimiters
    
$str preg_replace('/(' preg_quote($options['delimiter'], '/') . '){2,}/''$1'$str);

    
// Truncate slug to max. characters
    
$str mb_substr($str0, ($options['limit'] ? $options['limit'] : mb_strlen($str'UTF-8')), 'UTF-8');

    
// Remove delimiter from ends
    
$str trim($str$options['delimiter']);

    return 
$options['lowercase'] ? mb_strtolower($str'UTF-8') : $str;

bir ara gthubda görüp çarpmıştım, sadece türkçe değil özel harf içeren diğer latin ve slav alfabalerini de destekliyor.
  #4  
Okunmamış 30 Mayıs 2018, 00:14
Avatar Seçilmemiş
WM Aracı
 
Üyelik Tarihi: 31 Ocak 2016
Yaş / Cinsiyet: 35 / Erkek
Meslek: webmaster
Konum: Konya
Ad, Soyad: Er... Be...
Mesajlar: 268
Beğeniler: 59 / 10
Ticaret: 13, 100%
Güzelmiş aslında ama hata veriyor
  #5  
Okunmamış 30 Mayıs 2018, 03:15
Decimas Adlı Üyenin Avatarı
WM Aracı
 
Üyelik Tarihi: 19 Nisan 2015
Cinsiyet: Erkek
Meslek: Developer
Ad, Soyad: Ey... Er...
Mesajlar: 823
Beğeniler: 299 / 1
Ticaret: 1, 100%
İşini görür sanırım.

PHP- Kodu:
<?php    
/*--------------------- SEF Link ----------------- START */

    // Conversation title to better link string
    
public function sefLink($str){
        
$str $this->parentSefLink($str);
        if (
$str !== mb_convert_encoding(mb_convert_encoding($str'UTF-32''UTF-8'), 'UTF-8''UTF-32'))
            
$str mb_convert_encoding($str'UTF-8'mb_detect_encoding($str));
        
$str htmlentities($strENT_NOQUOTES'UTF-8');
        
$str preg_replace('`&([a-z]{1,2})(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig);`i''1'$str);
        
$str html_entity_decode($strENT_NOQUOTES'UTF-8');
        
$str preg_replace(array('`[^a-z0-9]`i''`[-]+`'), '-'$str);
        
$str strtolower(trim($str'-'));
        return 
$str;
    }

    
// helper function comes first
    // for turkish characters replacing
    
public function parentSefLink($string)
    {
        
$turkce=array("ş""Ş""ı""ü""Ü""ö""Ö""ç""Ç""ğ""Ğ""İ""I");
        
$duzgun=array("s""s""i""u""u""o""o""c""c""g""g""i""i");
        
$string str_replace($turkce$duzgun$string);
        
$string trim($string);
        
$string html_entity_decode($string);
        
$string strip_tags($string);
        
$string strtolower($string);
        
$string preg_replace('~[^ a-z0-9_.]~'' '$string);
        
$string preg_replace('~ ~''-'$string);
        
$string preg_replace('~-+~''-'$string);

        return 
$string;
    }

    
/*--------------------- SEF Link ----------------- END */
PHP- Kodu:
$newUrl sefLink("pijamalı hasta yağız şoföre çabucak güvendi !'^+%&/()=?_->£#${[]}\|;:><"); 
PSorg bunu beğendi.
no time for caution
Cevap Yaz Favorilerime Ekle

1113x90

Bu Alana Reklam Ver



Konuyu toplam 1 kişi okuyor. (0 üye ve 1 Ziyaretçi)
 
Seçenekler
Stil
Normal Normal

Geri Git   Forum > PHP


Yetkileriniz
Konu açma yetkiniz: Yok
Cevap Yazma Yetkiniz Yok
Eklenti yükleme yetkiniz: Yok
Mesajınızı değiştirme yetkiniz: Yok

BB code: Açık
İfadeler: Açık
[IMG] Kodları: Açık
HTML kodu: Kapalı





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şu anki Zaman: 19:17.