allora scrivendo così non mi dovrebbe trovare tutti i numero dallo 0 al 9 che abbiamo qualsiasi cosa prima o dopo.

$pattern="^([.]+)([1-9])([.]+)$";
$replace="$2";
$stringa=$dati["offerte"];
echo preg_replace($pattern,$replace,$stringa)