şuan biraz yogunum ama aşağıdaki kodu inceler isen belki birşeyler yapabilirsin.

ALINTI : ceviz.net

function TR_input($str)
{
     
    $out = "";
    for ($i = 0; $i<strlen($str);$i++)
    {
        $ch1= ord($str{$i});
        if($ch1==195 OR $ch1==196 OR $ch1==197)
        {
            $ch2=ord($str{$i+1});
            $ch="$ch1$ch2";
            $bak=1;
         
            switch($ch)
            {
                case "196159": $out .= "ğ";break;
                case "196158": $out .= "Ğ";break;
                case "196177": $out .= "ı";break;
                case "196176": $out .= "İ";break;
                case "195167": $out .= "ç";break;
                case "195135": $out .= "Ç";break;
                case "195188": $out .= "ü"; break;
                case "195156": $out .= "Ü"; break;
                case "195182": $out .= "ö"; break;
                case "195150": $out .= "Ö"; break;
                case "197158": $out .= "Ş"; break;
                case "197159": $out .= "ş"; break;
            }
            continue;
        }
        else
        if($bak==1)
        {
            $bak=0;
            continue;
        }
        else
            $out .= chr($ch1);
    }
    return $out;
}