/app/DataExtenso.php
https://gitlab.com/FellowsDevel/delicto · PHP · 162 lines · 132 code · 30 blank · 0 comment · 45 complexity · 22ecdec61e064b22fcafaec4c5bd657a MD5 · raw file
- <?php
- namespace Delicto;
- class DataExtenso
- {
- public static function dataPorExtenso($data, $inclui_artigo = false)
- {
- if(!$data){
- return '';
- }
- setlocale(LC_ALL, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese');
- date_default_timezone_set('America/Recife');
- $dia = trim(self::valorPorExtenso(substr($data, 0, 2)));
- $mes = utf8_encode(strftime('%B', strtotime(str_replace('/', '-', $data))));
- $ano = trim(self::valorPorExtenso(substr($data, 6, 4)));
- $diaSingularPlural = "dia";
- $inicio = "Ao";
- if (substr($data, 0, 2) == 1) {
- $dia = 'primeiro';
- }
- if (substr($data, 0, 2) > 1) {
- $diaSingularPlural = "dias";
- $inicio = "Aos";
- }
- $dt = str_replace('/', '.', $data);
- $resp = "$dia $diaSingularPlural do mês de $mes do ano de $ano ($dt)";
- if($inclui_artigo){
- $resp = "$inicio $dia $diaSingularPlural do mês de $mes do ano de $ano ($dt)";
- }
- return $resp;
- }
- public static function valorPorExtenso($valor = 0, $maiusculas = false)
- {
- if(!$valor){
- return '';
- }
- $singular = array("", "", "mil", "milhão", "bilhão", "trilhão", "quatrilhão");
- $plural = array("", "", "mil", "milhões", "bilhões", "trilhões", "quatrilhões");
- $c = array("", "cem", "duzentos", "trezentos", "quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos");
- $d = array("", "dez", "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa");
- $d10 = array("dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezesete", "dezoito", "dezenove");
- $u = array("", "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove");
- $z = 0;
- $rt = "";
- $valor = number_format($valor, 2, ".", ".");
- $inteiro = explode(".", $valor);
- for ($i = 0; $i < count($inteiro); $i++) {
- for ($ii = strlen($inteiro[$i]); $ii < 3; $ii++) {
- $inteiro[$i] = "0" . $inteiro[$i];
- }
- }
- $fim = count($inteiro) - ($inteiro[count($inteiro) - 1] > 0 ? 1 : 2);
- for ($i = 0; $i < count($inteiro); $i++) {
- $valor = $inteiro[$i];
- $rc = (($valor > 100) && ($valor < 200)) ? "cento" : $c[$valor[0]];
- $rd = ($valor[1] < 2) ? "" : $d[$valor[1]];
- $ru = ($valor > 0) ? (($valor[1] == 1) ? $d10[$valor[2]] : $u[$valor[2]]) : "";
- $r = $rc . (($rc && ($rd || $ru)) ? " e " : "") . $rd . (($rd &&
- $ru) ? " e " : "") . $ru;
- $t = count($inteiro) - 1 - $i;
- $r .= $r ? " " . ($valor > 1 ? $plural[$t] : $singular[$t]) : "";
- if ($valor == "000") {
- $z++;
- } elseif ($z > 0) {
- $z--;
- }
- if (($t == 1) && ($z > 0) && ($inteiro[0] > 0)) {
- $r .= (($z > 1) ? " de " : "") . $plural[$t];
- }
- if ($r) {
- $rt = $rt . ((($i > 0) && ($i <= $fim) &&
- ($inteiro[0] > 0) && ($z < 1)) ? (($i < $fim) ? ", " : " e ") : " ") . $r;
- }
- }
- if (!$maiusculas) {
- return ($rt ? $rt : "zero");
- } else {
- if ($rt) {
- $rt = ereg_replace(" E ", " e ", ucwords($rt));
- }
- return (($rt) ? ($rt) : "Zero");
- }
- }
- public static function valorOrdinal($valor = 0, $maiusculas = false)
- {
- $singular = array("", "", "milésimo", "milionésimo", "bilionésimo", "trilhonésimo", "quadrilhonésimo");
- $plural = array("", "", "milésimos", "milionésimos", "bilionésimos", "trilhonésimos", "quadrilhonésimos");
- $c = array("", "centésimo", "ducentésimo", "tricentésimo", "quadringentésimo", "quingentésimo", "sexcentésimo", "septingentésimo", "octingentésimo", "noningentésimo");
- $d = array("", "décimo", "vigésimo", "trigésimo", "quadragésimo", "quinquagésimo", "sexagésimo", "septuagésimo", "octogésimo", "nonagésimo");
- $d10 = array("décimo", "décimo primeiro", "décimo segundo", "décimo terceiro", "décimo quarto", "décimo quinto", "décimo sexto", "décimo sétimo", "décimo oitavo", "décimo novo");
- $u = array("", "primeiro", "segundo", "terceiro", "quarto", "quinto", "sexto", "sétimo", "oitavo", "nono");
- $z = 0;
- $rt = "";
- $valor = number_format($valor, 2, ".", ".");
- $inteiro = explode(".", $valor);
- for ($i = 0; $i < count($inteiro); $i++) {
- for ($ii = strlen($inteiro[$i]); $ii < 3; $ii++) {
- $inteiro[$i] = "0" . $inteiro[$i];
- }
- }
- $fim = count($inteiro) - ($inteiro[count($inteiro) - 1] > 0 ? 1 : 2);
- for ($i = 0; $i < count($inteiro); $i++) {
- $valor = $inteiro[$i];
- $rc = (($valor > 100) && ($valor < 200)) ? $c[$valor[0]] : $c[$valor[0]];
- $rd = ($valor[1] < 2) ? "" : $d[$valor[1]];
- $ru = ($valor > 0) ? (($valor[1] == 1) ? $d10[$valor[2]] : $u[$valor[2]]) : "";
- $r = $rc . (($rc && ($rd || $ru)) ? " " : "") . $rd . (($rd && $ru) ? " " : "") . $ru;
- $t = count($inteiro) - 1 - $i;
- $r .= $r ? " " . ($valor > 1 ? $plural[$t] : $singular[$t]) : "";
- if ($valor == "000") {
- $z++;
- } elseif ($z > 0) {
- $z--;
- }
- if (($t == 1) && ($z > 0) && ($inteiro[0] > 0)) {
- $r .= (($z > 1) ? " de " : "") . $plural[$t];
- }
- if ($r) {
- $rt = $rt . ((($i > 0) && ($i <= $fim) &&
- ($inteiro[0] > 0) && ($z < 1)) ? (($i < $fim) ? ", " : " e ") : " ") . $r;
- }
- }
- if (!$maiusculas) {
- return ($rt ? $rt : "zero");
- } else {
- if ($rt) {
- $rt = ereg_replace(" E ", " e ", ucwords($rt));
- }
- return (($rt) ? ($rt) : "Zero");
- }
- }
- }
- ?>