Отредактировано после ваших комментариев
Возможно, это не лучшее решение, но вы можете сделать это так:
$string = 'text more text "empty space"';
preg_match('/(.*)(".*?")$/', $string, $matches);
$finaltext = $matches[1] . str_replace(' ', '###', $matches[2]);