Eduardokum\LaravelBoleto\Util::nRealExtenso PHP Method

nRealExtenso() public static method

Mostra um numero por extenso.
public static nRealExtenso ( $value, $uppercase ) : string
$value
$uppercase 1 - UPPER; 2 - Upper; false - tudo minusculo;
return string
    public static function nRealExtenso($value, $uppercase)
    {
        $value = self::nFloat($value, 2);
        $singular = ["centavo", "real", "mil", "milhão", "bilhão", "trilhão", "quatrilhão"];
        $plural = ["centavos", "reais", "mil", "milhões", "bilhões", "trilhões", "quatrilhões"];
        $c = ["", "cem", "duzentos", "trezentos", "quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos"];
        $d = ["", "dez", "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa"];
        $d10 = ["dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezesete", "dezoito", "dezenove"];
        $u = ["", "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove"];
        $z = 0;
        $value = number_format($value, 2, ".", ".");
        $integer = explode(".", $value);
        $cont = count($integer);
        for ($i = 0; $i < $cont; $i++) {
            for ($ii = strlen($integer[$i]); $ii < 3; $ii++) {
                $integer[$i] = "0" . $integer[$i];
            }
        }
        $fim = $cont - ($integer[$cont - 1] > 0 ? 1 : 2);
        $rt = '';
        for ($i = 0; $i < $cont; $i++) {
            $value = $integer[$i];
            $rc = $value > 100 && $value < 200 ? "cento" : $c[$value[0]];
            $rd = $value[1] < 2 ? "" : $d[$value[1]];
            $ru = $value > 0 ? $value[1] == 1 ? $d10[$value[2]] : $u[$value[2]] : "";
            $r = $rc . ($rc && ($rd || $ru) ? " e " : "") . $rd . ($rd && $ru ? " e " : "") . $ru;
            $t = $cont - 1 - $i;
            $r .= $r ? " " . ($value > 1 ? $plural[$t] : $singular[$t]) : "";
            if ($value == "000") {
                $z++;
            } elseif ($z > 0) {
                $z--;
            }
            if ($t == 1 && $z > 0 && $integer[0] > 0) {
                $r .= ($z > 1 ? " de " : "") . $plural[$t];
            }
            if ($r) {
                $rt = $rt . ($i > 0 && $i <= $fim && $integer[0] > 0 && $z < 1 ? $i < $fim ? ", " : " e " : " ") . $r;
            }
        }
        if (!$uppercase) {
            return trim($rt ? $rt : "zero");
        } elseif ($uppercase == "2") {
            return trim(strtoupper($rt) ? strtoupper(strtoupper($rt)) : "Zero");
        } else {
            return trim(ucwords($rt) ? ucwords($rt) : "Zero");
        }
    }