Number to Words
Convert numbers to full words in Portuguese.
Gratis ate 10 MB por arquivo100 MB por enviosem anuncio antes do limite
$titulo = 'Número por Extenso';
$descricao = 'Converta números para texto por extenso em português brasileiro';
$palavrasChave = 'numero por extenso, escrever numero, texto, conversor';
$numero = '';
$resultado = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$numero = $_POST['numero'] ?? '';
$numeroLimpo = str_replace(['.', ',', ' '], '', $numero);
if (is_numeric($numeroLimpo)) {
$numeroInt = intval($numeroLimpo);
$resultado = numeroParaExtenso($numeroInt);
}
}
function numeroParaExtenso($numero) {
if ($numero === 0) {
return 'zero';
}
if ($numero < 0) {
return 'menos ' . numeroParaExtenso(abs($numero));
}
$unidades = ['', 'um', 'dois', 'três', 'quatro', 'cinco', 'seis', 'sete', 'oito', 'nove'];
$dezOnze = ['dez', 'onze', 'doze', 'treze', 'quatorze', 'quinze', 'dezesseis', 'dezessete', 'dezoito', 'dezenove'];
$dezenas = ['', '', 'vinte', 'trinta', 'quarenta', 'cinquenta', 'sessenta', 'setenta', 'oitenta', 'noventa'];
$centenas = ['', 'cento', 'duzentos', 'trezentos', 'quatrocentos', 'quinhentos', 'seiscentos', 'setecentos', 'oitocentos', 'novecentos'];
$centenaExata = ['', 'cem', 'duzentos', 'trezentos', 'quatrocentos', 'quinhentos', 'seiscentos', 'setecentos', 'oitocentos', 'novecentos'];
$grupos = ['', 'mil', 'milhão', 'bilhão', 'trilhão', 'quatrilhão', 'quintilhão'];
$pluralGrupos = ['', 'mil', 'milhões', 'bilhões', 'trilhões', 'quatrilhões', 'quintilhões'];
$partes = [];
$grupoIndex = 0;
while ($numero > 0) {
$grupo = $numero % 1000;
$numero = intval($numero / 1000);
if ($grupo > 0) {
$grupoTexto = '';
// Centenas
$centena = intval($grupo / 100);
$resto = $grupo % 100;
if ($centena > 0) {
if ($resto === 0 && $centena === 1) {
$grupoTexto = 'cem';
} else {
$grupoTexto = $centenas[$centena];
}
}
// Dezenas e unidades
if ($resto > 0) {
if ($grupoTexto !== '') {
$grupoTexto .= ' e ';
}
if ($resto < 10) {
$grupoTexto .= $unidades[$resto];
} elseif ($resto < 20) {
$grupoTexto .= $dezOnze[$resto - 10];
} else {
$dezena = intval($resto / 10);
$unidade = $resto % 10;
$grupoTexto .= $dezenas[$dezena];
if ($unidade > 0) {
$grupoTexto .= ' e ' . $unidades[$unidade];
}
}
}
// Adiciona o grupo (mil, milhões, etc)
if ($grupoIndex === 1) {
$partes[] = $grupoTexto . ' ' . $grupos[$grupoIndex];
} elseif ($grupoIndex > 1) {
if ($grupo === 1) {
$partes[] = 'um ' . $grupos[$grupoIndex];
} else {
$partes[] = $grupoTexto . ' ' . $pluralGrupos[$grupoIndex];
}
} else {
$partes[] = $grupoTexto;
}
}
$grupoIndex++;
}
// Junta as partes
$partes = array_reverse($partes);
$resultado = '';
for ($i = 0; $i < count($partes); $i++) {
if ($i > 0) {
if ($partes[$i] !== '' && strpos($partes[$i], 'mil') === false) {
$resultado .= ' e ';
} elseif ($partes[$i] !== '' && strpos($partes[$i], 'mil') !== false) {
$resultado .= ' ';
}
}
$resultado .= trim($partes[$i]);
}
return trim($resultado);
}
?>
📚 Exemplos
1
um
15
quinze
42
quarenta e dois
100
cem
1.234
mil duzentos e trinta e quatro
1.000.000
um milhão
Recommended next step
Keep this result working for you
Minike connects the tool you are using with the product most likely to generate recurring value.
$9.90/mo
Minike Tools Pro
Bigger conversions, no main ads and priority processing.
Free: 10 MB per file and 100 MB per batch.
$5.90/mo
Minike Sites
Turn converted assets into pages, landing pages and stores.
Free preview before publishing.
Prices shown for Brazil and US positioning. Current local checkout charges BRL until the international gateway is enabled.