Isso depende muito de como seus dados são formatados dentro de
$r_val
, mas um bom lugar para começar seria tentar:$r_val = preg_replace('/(?<!\.)\b0\b(?!\.)/', '-', $r_val);
Onde
\b
é um caractere de comprimento 0 que representa o início ou o fim de uma 'palavra'. Por mais estranho que possa parecer, mas a documentação de regex Perl é realmente muito bom para explicar a parte regex do
preg_*
funções, já que Perl é onde a funcionalidade é realmente implementada.