Belki başka birileride gerek duyarsa yapmak için cebelleşmesin diye yaziyorum
function str2url($convertStr){
    $search     = array('ç','Ç','ğ','Ğ','ı','İ', 'ö', 'Ö','ş', 'Ş','ü','Ü'); 
    $replace    = array('c','c','g','g','i','i', 'o', 'o','s', 's','u','U');
    $convertStr = str_replace( $search , $replace , $convertStr );
    $convertStr = strtolower( $convertStr );
    $convertStr = preg_replace( '/\s\s+/' , ' ' , $convertStr );
    $convertStr = str_replace(' ' , '-' , $convertStr );
    $convertStr = ereg_replace( '[^a-zA-Z0-9-]' , '' , $convertStr );
    return $convertStr;
}
Amaç

ABC ÇDEFGHIİJKLM...'//NOÖPQRSŞTUÜVWXYZ-0123456789 - abcçdefghıijklmnoöpqrsştvwxyz

gibi bir kelimeden ingilizce karakter setinde küçük harftlerden oluşan. arada 1 den fazla white space kareketeri varsa bunu teke indiren ve bu boşluklarıda çizgi - işareti ile değiştiren bir fonksiyon oluşturmak

adım adım bakarsak şayet
$convertStr = str_replace( $search , $replace , $convertStr );
kısmı türkçe karakterleri benzer ingilizce karakterleri ile değitiriyor
$convertStr = strtolower( $convertStr );
tüm metni küçük harfe çeviriyor
$convertStr = preg_replace( '/\s\s+/' , ' ' , $convertStr );
birden fazla geçen whitespaceleri yok ediyor
$convertStr = str_replace(' ' , '-' , $convertStr );
// boşluk karakterini tireye çeviriyor
$convertStr = ereg_replace( '[^a-zA-Z0-9-]' , '' , $convertStr );
/ son işlem olarak küçük harf a-z Büyük harf A-Z ve tire haricindeki tüm karakterleri uçuyor. regular expressionlarda biraz zayıfım son kısımdaki tire ifademden şüpheliyim ama testlerimde henüz problem çıkarmadı

vatana millete hayırlı olsun