This is because you use double quotes "around your regular expression pattern, which cause the php engine to parse \x00and characters \x09.
If you use single quotes, this will work:
$str = '(' . chr(0x00) . chr(0x91) . ')' ;
$str = preg_replace('/\x00\x09/', '-', $str) ;
, . \x00 \x91 -, []:
$str = preg_replace('/[\x00\x91/]', '-', $str) ;