Zależy to w dużej mierze od tego, jak Twoje dane są sformatowane w $r_val , ale na początek warto spróbować:
$r_val = preg_replace('/(?<!\.)\b0\b(?!\.)/', '-', $r_val);
Gdzie \b to znak o długości 0 reprezentujący początek lub koniec „słowa”.
Może to zabrzmieć dziwnie, ale dokumentacja wyrażeń regularnych Perla
jest naprawdę dobry do wyjaśnienia części wyrażenia regularnego preg_* funkcje, ponieważ Perl jest miejscem, w którym faktycznie zaimplementowana jest funkcjonalność.