Bu sorunu çözmek için aplication/helpers klasöründe MY_url_helper.php isimli bir dosya oluşturarak aşağıdaki fonksiyonu içine yazmanız yeterli. Bu işlemi yaptıktan sonra url_title fonksiyonu Türkçe karakterleri düzgün bir şekilde çevirecektir.
function url_title($str, $separator = 'dash', $lowercase = FALSE)
{
if ($separator == 'dash')
{
$search = '_';
$replace = '-';
}
else
{
$search = '-';
$replace = '_';
}
$trans = array(
'&\#\d+?;' => '',
'&\S+?;' => '',
'\s+' => $replace,
'\.' => $replace,
'[^a-z0-9\-_]' => '',
$replace . '+' => $replace,
$replace . '$' => $replace,
'^' . $replace => $replace,
'\.+$' => ''
);
$search_tr = array('ı', 'İ', 'Ğ', 'ğ', 'Ü', 'ü', 'Ş', 'ş', 'Ö', 'ö', 'Ç', 'ç');
$replace_tr = array('i', 'I', 'G', 'g', 'U', 'u', 'S', 's', 'O', 'o', 'C', 'c');
$str = str_replace($search_tr, $replace_tr, $str);
$str = strip_tags($str);
foreach ($trans as $key => $val)
{
$str = preg_replace("#" . $key . "#i", $val, $str);
}
if ($lowercase === TRUE)
{
$str = strtolower($str);
}
return trim(stripslashes($str));
}
Yararlı bir yazı.
Elinize sağlık
Hımm hiç dikkat etmemiştim. Paylaştığın iyi oldu teşekkürler.
Ellerine sağlık
ellerıne saglık oncelıkle. daha oncekı suurmlerde ıse yaradı ama cı 2.0 da denedımde turkce karakterlerde degısme olmadı nasıl duzelte bılırız?
Codeigniter'ın kendi içindei "url" ve "text" helper'ları ilede daha kolay yapabilirsiniz.
echo url_title(convert_accented_characters('türkçe karakterli başlık'))
ekranda "turkce-karakterli-baslik" yazar.
kolay gelsin
@onurtez 2.0 versiyonu ile bu blogda dahil bir çok proje yaptım. Herhangi bir problem olmadı.
@Musa convert_accented_characters ile ü ve ö harflerinde problem oluşacaktır. Çünkü turkce değil tuerkce yazacaktır.
bu problemi application\config\foreign_chars.php dosyasını açıp o karakterleri düzeltebilirsiniz.
Sıfırdan yapmak yerine varolanı düzeltip kullanmak daha mâkul bence.
doğrusunu söylemek gerekirse bir anda tüm dertlerimi yok etti :)