Si me permites, yo cambiaba la función desglosar que has detallado:
Código PHP:
function desglosar($cifra,$moneda){
preg_match_all("/[0-9]/", $cifra, $digitos);
echo "cifra: $cifra moneda: $moneda<br>";
//compruebo si la cifra tiene parte decimal o no
$decimal = explode(".",$cifra);
if(($cifra - $decimal[0]) != 0){
$entero = $decimal[0];
$cent=$decimal[1];
echo "$entero $moneda con $cent centimos <br>";
}
else{
$entero = $cifra;
echo "$entero $moneda <br>";
echo "sin céntimos<br>";
}
}
Por esta otra, que hace lo mismo pero es mucho más "breve":
Código PHP:
function desglosar( $cifra, $moneda ) {
$patron = "/^(\d+).?(\d*)$/";
$entero = preg_replace( $patron, "$1", $cifra );
$decimal = preg_replace( $patron, "$2", $cifra );
echo "$entero $moneda ".($decimal ? "con $decimal centimos" : "sin céntimos")."<br>";
}
Un saludo!