A priori, ça ne devait pas fonctionner lndiana-Jones, j'aurais mis "s" en option de la regex et preg_match ne fait aucun remplacement.
En faisant léger dans l'expreg : preg_replace('`"([^"]+)"`U', '$1', $string);
[14:21] <simon@nozomi:/tmp> % cat > toto.php; php5 toto.php;
<?php
$string = '"toast"';
$foo = preg_replace('`"([^"]+)"`U', '$1', $string);
echo $foo, "\n";
^D
toast
[14:22] <simon@nozomi:/tmp> %