alttaki kodları kullandım yaba benzer functionları utf 8 sayfamda tr karakter bozuk çıkartıyor cümledeki tüm harfleri küçültürken tr karakterleri bozuyor. Bunun çözümü nedir.
ön izleme : �dlek Herifler Sizi D�v�p Uzakla��t�rmal�

Yapmak istediğim kısaca cümle kücük yada büyük olsun tüm harfleri kücültüp baş harflerini büyültmek tr karakter bozmadan
class StringCases
{
 public function strToUpper($value)
 {
 $value = str_replace("ç", "Ç", $value);
 $value = str_replace("ğ", "Ğ", $value);
 $value = str_replace("ı", "I", $value);
 $value = str_replace("i", "İ", $value);
 $value = str_replace("ö", "Ö", $value);
 $value = str_replace("ü", "Ü", $value);
 $value = str_replace("ş", "Ş", $value);
 
 $value = strtoupper($value);
 $value = trim($value);
 
 return $value;
 }
 
 public function strToLower($value)
 {
 $value = str_replace("Ç", "ç", $value);
 $value = str_replace("Ğ", "ğ", $value);
 $value = str_replace("I", "ı", $value);
 $value = str_replace("İ", "i", $value);
 $value = str_replace("Ö", "ö", $value);
 $value = str_replace("Ü", "ü", $value);
 $value = str_replace("Ş", "ş", $value);
 
 $value = strtolower($value);
 $value = trim($value);
 
 return $value;
 }
 
 public function uCaseWords($value)
 
{
$value = $this->strToLower($value);
 
$value = split(" ", trim($value));
 
 $value_tr = "";
 
 for($x=0; $x < count($value); $x++)
 {
 $value_first = substr($value[$x], 0, 1);
 $value_last = substr($value[$x], 1);
 $value_first = $this->strToUpper($value_first);
 
 $value_tr .= $value_first . $value_last ." ";
 }
 
 $value_tr = trim($value_tr);
 
 return $value_tr;
 }
 
}
$Tureyen=new StringCases();

echo $Tureyen->uCaseWords("<li>ÖDLEK HERİFLER SİZİ DÖVÜP UZAKLAŞTIRMALI</li>");
extra olarak alttakileride denedim olmadı
function uc_words($gelen)
{
    $kc = str_split('abcçdefghıijklmnoöpqrsştuüvwxyz');
    $by = str_split('ABCÇDEFGHIİJKLMNOÖPQRSŞTUÜVWXYZ');
    $kelime = preg_split('^\s+^si', $gelen);
    foreach ($kelime as $k) {
        $ilk = substr($k, 0, 1);
        if ($ilk == '(' || $ilk == '[' || $ilk == '{') {
            $kx = substr($k, 1, strlen($k));
            $veri[] = substr($k, 0, 1)
                    . str_replace($kc, $by, substr($kx, 0, 1))
                    . substr($kx, 1, strlen($kx));
        } else {
            $veri[] = str_replace($kc, $by, $ilk) 
                    . substr($k, 1, strlen($k));
        }
        unset($ilk, $verix);
    }
    return join(' ', $veri);
}  

function toUpperCase( $input )   
{   
return strtoupper( strtr( $input,'ğüşıiöç', 'ĞÜŞIİÖÇ') );   
}   




function toLowerCase( $input )   
{   
return strtolower(strtr( $input,'ĞÜŞIİÖÇ','ğüşıiöç'));  
 }