Il codice corretto è:
<?php
$string = 'bla bla bla [pinco pallo] bla bla bla bla [tizio caio] bla bla bla bla';
$string = preg_replace('#\[([^\]]*)\]#e', "'<a href=\"staff.php#' . str_replace(' ', '_', '\\1') . '\">\\1</a>'", $string);
print($string);
?>