Regex kullanarak yapabilirsiniz. Bir deneyin isterseniz işinize yarayacağını düşünüyorum. Tabi aşağıdaki slug fonskiyonunu çalıştırmadan önce harf değişikliği fonskiyonuna sokun daha sonra değişkeni slug fonskiyonuna sokun. Çevirebildiği harfleri çevirsin çeviremediklerini aşağıdaki fonskiyon "-" yapsın.
function slug($str){
$str = strtolower(trim($str));
$str = preg_replace('/[^a-z0-9-]/', '-', $str);
$str = preg_replace('/-+/', "-", $str);
return $str;
}