In questo caso si puō usare una semplice espressione regolare che lavora proprio sui range:

Codice PHP:
$myString='la_tua_stringa';
// la classe [^a-z\\x20] esclude tutti i caratteri diversi 
// da quelli contenuti nel range "a-z" + lo spazio
$myNewString=preg_replace('/[^a-z\\x20]+/i','',$myString);
$myNewString=str_replace(' ','-',$myNewString);


// una versione che usa solo preg_replace
$myNewString=preg_replace('/[^a-z]/ie','"$0"==" "?"-":""',$myString); 
La comoditā č non doversi preoccupare di includere tutti i caratteri da escludere.