php – – cislo_slovy() – Konverze čísla na vyjádření slovy
Trochu neforemná, ale fungující funkce na převod čísla do slovní podoby:
////////////////////////////////////////////////////////////////////////////////
// Prevod cisla na slova
////////////////////////////////////////////////////////////////////////////////
function cislo_slovy($GET_CISLO) {
$CISLO_TEST = $GET_CISLO;
$CO = array (“ „, „,“); $CIM = array („“, „.“);
$CISLO_UPRAVA = trim(str_replace($CO, $CIM, $CISLO_TEST));
$MINUS = substr($CISLO_UPRAVA, 0, 1);
if ( $MINUS == „-„) $MINUS = „mínus „;
else $MINUS = „“;
$CISLO_UPRAVA = str_replace(„-„, „“, $CISLO_UPRAVA);
if ($CISLO_UPRAVA == „0“) return „nula“;
$CISLO_ROZKLAD = explode(„.“, $CISLO_UPRAVA); $CISLO_CELE = (int) $CISLO_ROZKLAD[0];
$CISLO_CELE_POLE = str_split(strrev($CISLO_CELE), „3“);
$CISLICE_PREDCHOZI = „“; $CISLO_SLOVY = „“;
$CISLO_DELKA = count($CISLO_CELE_POLE);
if ($CISLO_DELKA > 3) exit(„<div style=’font-weight: bold; color: #ff0000;‘>Nejvyšší číslo pro převod: 999999999.</br>Nejvyšší číslo pro převod: -999999999.</div>“);
$CISLICE_TEXT_1 = array (“ „, „jedna“, „dvě“, „tři“, „čtyři“, „pět“, „šest“, „sedm“, „osm“, „devět“);
$CISLICE_TEXT_2 = array (“ „, „deset“, „dvacet“, „třicet“, „čtyřicet“, „padesát“, „šedesát“, „sedmdesát“, „osmdesát“, „devadesát“);
$CISLICE_TEXT_3 = array (“ „, „sto“, „stě“, „sta“, „sta“, „set“, „set“, „set“, „set“, „set“); $CISLICE_TEXT_4 = array („tisíc“, „tisíc“, „tisíce“, „tisíce“, „tisíce“, „tisíc“, „tisíc“, „tisíc“, „tisíc“, „tisíc“);
$CISLICE_TEXT_5 = array („milión“, „milión“, „milióny“, „milióny“, „milióny“, „miliónů“, „miliónů“, „miliónů“, „miliónů“, „miliónů“);
$CISLO_TEXT = „“;
for ($i = ($CISLO_DELKA – 1); $i >= 0 ; $i–) {
$CISLO_TMP = str_split(strrev($CISLO_CELE_POLE[$i]), „1“);
$CISLO_TEXT_TMP = „“;
for ($y = 0; $y < count($CISLO_TMP); $y++) {
$PORADI = $y + (3 – count($CISLO_TMP));
if ($PORADI == 0) {$CISLO_TEXT_TMP = $CISLO_TEXT_TMP . “ “ . $CISLICE_TEXT_1[$CISLO_TMP[$y]] . “ “ . $CISLICE_TEXT_3[$CISLO_TMP[$y]];}
elseif ($PORADI == 1) {$CISLO_TEXT_TMP = $CISLO_TEXT_TMP . “ “ . $CISLICE_TEXT_2[$CISLO_TMP[$y]];}
elseif ($PORADI == 2) {$CISLO_TEXT_TMP = $CISLO_TEXT_TMP . “ “ . $CISLICE_TEXT_1[$CISLO_TMP[$y]]; $POSLEDNI_TMP = $CISLO_TMP[$y];}
}
if ($i == 0) $CISLO_TEXT .= $CISLO_TEXT_TMP;
$POSLEDNI_TMP = substr($CISLO_CELE_POLE[$i], 0, 1);
if ($i == 1) {
if (substr(strrev($CISLO_CELE_POLE[$i]), -2) > 9 and substr(strrev($CISLO_CELE_POLE[$i]), -2) < 15) $POSLEDNI_TMP = 1;
$CISLO_TEXT .= $CISLO_TEXT_TMP . “ “ . $CISLICE_TEXT_4[$POSLEDNI_TMP];
}
if ($i == 2) {
if (substr(strrev($CISLO_CELE_POLE[$i]), -2) > 9 and substr(strrev($CISLO_CELE_POLE[$i]), -2) < 15) $POSLEDNI_TMP = 9;
$CISLO_TEXT .= $CISLO_TEXT_TMP . “ “ . $CISLICE_TEXT_5[$POSLEDNI_TMP];
}
}
$CISLO_TEXT = preg_replace(‚/(\s+)/‘, ‚ ‚, $CISLO_TEXT);
$CO = array(„deset jedna“, „deset dvě“, „deset tři“, „deset čtyři“, „deset pět“, „deset šest“, „deset sedm“, „deset osm“, „deset devět“);
$CIM = array („jedenáct“, „dvanáct“, „třináct“, „čtrnáct“, „patnáct“, „šestnáct“, „sedmnáct“, „osumnáct“, „devatenáct“);
$CISLO_TEXT = str_replace($CO, $CIM, $CISLO_TEXT);
$CO = array(„jedna sto“, „jedna tisíc“, „dvě tisíce“, „jedna milión“, „milión tisíc“, „milióny tisíc“, „miliónů tisíc“);
$CIM = array („jedno sto“, „jeden tisíc“, „dva tisíce“, „jeden milión“, „milión“, „milióny“, „miliónů“);
$CISLO_TEXT = str_replace($CO, $CIM, $CISLO_TEXT);
return $MINUS . $CISLO_TEXT;
}
////////////////////////////////////////////////////////////////////////////////
// Konec – Prevod cisla na slova
////////////////////////////////////////////////////////////////////////////////