Esto depende mucho de cómo se formatean tus datos dentro de $r_val
, pero un buen lugar para comenzar sería probar:
$r_val = preg_replace('/(?<!\.)\b0\b(?!\.)/', '-', $r_val);
Donde \b
es un carácter de longitud 0 que representa el comienzo o el final de una 'palabra'.
Por extraño que parezca, pero la documentación de expresiones regulares de Perl
es realmente muy bueno para explicar la parte de expresiones regulares del preg_*
funciones, ya que Perl es donde realmente se implementa la funcionalidad.