Ciao si hai ragione, ho provato questa: però non gestisce i decimali. Nel senso che 852,00 lo legge correttamente ottocento cinquantadue (devo poi fargli togliere lo spazio) ma se il valore è 852,25 me lo legge sempre ottocento cinquantadue. quando io vorrei che nel primo caso mi leggesse ottocenticinquantadue/00 e nel secondo caso ottocentocinquantadue/25
function numero_lettere($numero)
{
if (($numero < 0) || ($numero > 999999999))
{
return "$numero";
}
$milioni = floor($numero / 1000000); // Milioni
$numero -= $milioni * 1000000;
$migliaia = floor($numero / 1000); // Migliaia
$numero -= $migliaia * 1000;
$centinaia = floor($numero / 100); // Centinaia
$numero -= $centinaia * 100;
$decine = floor($numero / 10); // Decine
$unita = $numero % 10; // Unità
$cifra_lettere = "";
if ($milioni)
{
$tmp = numero_lettere($milioni);
$cifra_lettere .= ($tmp=='uno') ? '' : $tmp;
$cifra_lettere .= ($milioni == '1') ? "un milione ":" milioni ";
}
if ($migliaia)
{
$tmp = numero_lettere($migliaia);
$cifra_lettere .= ($tmp=='uno') ? '' : $tmp;
$cifra_lettere .= ($migliaia == '1') ? "mille":"mila ";
}
if ($centinaia)
{
$tmp = numero_lettere($centinaia);
$cifra_lettere .= ($tmp=='uno') ? '' : $tmp;
$cifra_lettere .= "cento";
}
$array_primi = array("", "uno", "due", "tre", "quattro", "cinque", "sei",
"sette", "otto", "nove", "dieci", "undici", "dodici", "tredici",
"quattordici", "quindici", "sedici", "diciassette", "diciotto",
"diciannove");
$array_decine = array("", "", " venti", " trenta", " quaranta", " cinquanta", " sessanta",
" settanta", " ottanta", " novanta");
$array_decine_tronc = array("", "", " vent", " trent", " quarant", " cinquant", " sessant",
" settant", " ottant", " novant");
if ($decine || $unita)
{
if ($decine < 2)
{
$cifra_lettere .= $array_primi[$decine * 10 + $unita];
}
else
{
if ($unita == 1 || $unita == 8)
$cifra_lettere .= $array_decine_tronc[$decine];
else
$cifra_lettere .= $array_decine[$decine];
if ($unita)
{
$cifra_lettere .= $array_primi[$unita];
}
}
}
if (empty($cifra_lettere))
{
$cifra_lettere = "zero";
}
return $cifra_lettere;
}