preg_replace accetta anche array (sul manuale vengono chiamate matrici indicizzate).

Quindi puoi anche fare in questo modo:
Codice PHP:
$replace[] = '/(\w+)/' ;
$replacer[] = '-' ;
$replace[] = '/(\s+)/' ;
$replacer[] = '-' ;

$input preg_replace$replace $replacer $input ) ; 
Provalo e fammi sapere se funziona! Ciao!