Προς το περιεχόμενο

Μετατροπή αριθμού σε λέξεις


Uberalles_gr

Προτεινόμενες αναρτήσεις

Καλησπέρα,

 

θέλω να βάζω αριθμούς και να μου το βγάζει ολογράφως.

 

π.χ. 5.632 => πέντε χιλιάδες και εξακόσια τριάντα δύο

π.χ. το 125.765 => εκατό είκοσι πέντε χιλιάδες και εφτακόσια είκοσι πέντε

 

Υπάρχει κάτι τέτοιο διαθέσιμο;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

χαχαχαχαχαχ

 

Σε ευχαριστώ για τα links, μόνο που είναι στα αγγλικά.

 

Παρακάτω είναι ο κώδικας για τα Ελληνικά:

<?php
/**
 * Takes a (integer/float) number as argument and returns a word representation
 * of the number in Greek.
 */
function SayEuro($curAmount){
  $bFemale = FALSE;
  if($curAmount > 999999.99 || $curAmount < -999999.99) {
    return 'Αδύνατη η μετατροπή αριθμού σε ολογράφως';
  }
  $sResult = '';
  if($curAmount < 0){
    $sResult = 'Μείον ';
    $curAmount = abs($curAmount);
  }
  $sResult .= SayNumber((int)$curAmount, $bFemale) . 'Ευρώ';
  if($curAmount - (int)$curAmount > 0) {
    $sResult .= ' και ' . SayNumber(100 * ($curAmount - (int)$curAmount), $bFemale) . 'Λεπτά';
  }
  return $sResult;
}
 
function SayNumber($curAmount, &$bFemale) {
    $sResult = '';
    $lAmount = round($curAmount, 0);
    $tmp = 0;
 
    // Uniques & decimals.
    $tmp = intval(substr($lAmount, -2));
    if($lAmount == 0) {
      $sResult = 'Μηδέν ';
    } elseif($tmp < 20) {
      $sResult .= ($sResult == '')?'':' ' . ($bFemale)?SayUniqueFemale($tmp):SayUnique($tmp) . ' ';
    }else{
      $sResult .= SayTens($tmp) . ' ';
      if(intval(substr(strval($tmp), -1)) > 0) {
        $tmptmp = substr(strval($tmp), 1);
        $sResult .= ($bFemale)?SayUniqueFemale($tmptmp):SayUnique($tmptmp) . ' ';
      }
    }
 
    $lAmount -= $tmp;
 
    // Hundreds.
    $tmp = substr($lAmount, -3);
    if($tmp > 100 || ($tmp == 100 && $sResult != '')) {
      $sResult = (($bFemale)?SayHundredsFemale($tmp):SayHundreds($tmp)) . ' ' . $sResult;
    }elseif($tmp == 100 && $sResult == '') {
      $sResult = 'Εκατό';
    }
    $lAmount -= $tmp;
 
    // Thousands.
    if($lAmount >= 1000) {
      $sResult = SayThousands($lAmount, $bFemale) . ' ' . $sResult;
    }
    $bFemale = FALSE;
    return $sResult;
}
 
function SayUnique($iNumber) {
  $vardigit = array('Ένα', 'Δύο', 'Τρία', 'Τέσσερα', 'Πέντε', 'Έξι', 'Επτά',
    'Οκτώ', 'Εννέα', 'Δέκα', 'Ένδεκα', 'Δώδεκα', 'Δεκατρία', 'Δεκατέσσερα',
    'Δεκαπέντε', 'Δεκαέξι', 'Δεκαεφτά', 'Δεκαοχτώ', 'Δεκαεννιά');
  if($iNumber > 0){
    return $vardigit[$iNumber - 1];
  }
}
 
function SayTens($iNumber) {
  $vardigit = array('Δέκα', 'Είκοσι', 'Τριάντα', 'Σαράντα', 'Πενήντα', 'Εξήντα',
    'Εβδομήντα', 'Ογδόντα', 'Ενενήντα');
  return $vardigit[$iNumber/10 - 1];
}
 
function SayHundreds($iNumber) {
  $vardigit = array('Εκατόv', 'Διακόσια', 'Τριακόσια', 'Τετρακόσια',
    'Πεντακόσια', 'Εξακόσια', 'Επτακόσια', 'Οκτακόσια', 'Εννιακόσια');
  return $vardigit[$iNumber/100 - 1];
}
 
function SayThousands($iNumber, &$bFemale) {
  $bFemale = TRUE;
  return ($iNumber == 1000)?'Χίλια':(SayNumber($iNumber/1000, $bFemale).' Χιλιάδες');
}
 
function SayUniqueFemale($iNumber) {
  $vardigit = array('Μια', 'Δύο', 'Τρεις', 'Τέσσερις', 'Πέντε', 'Έξι', 'Επτά',
    'Οκτώ', 'Εννέα', 'Δέκα', 'Ένδεκα', 'Δώδεκα', 'Δεκατρείς', 'Δεκατέσσερεις',
    'Δεκαπέντε', 'Δεκαέξι', 'Δεκαεφτά', 'Δεκαοχτώ', 'Δεκαεννιά');
  if($iNumber > 0) {
    return $vardigit[$iNumber - 1];
  }
}
 
function SayHundredsFemale($iNumber) {
  $vardigit = array('Εκατόv', 'Διακόσιες', 'Τριακόσιες', 'Τετρακόσιες',
    'Πεντακόσιες', 'Εξακόσιες', 'Επτακόσιες', 'Οκτακόσιες', 'Εννιακόσιες');
  return $vardigit[$iNumber/100 - 1];
}

echo SayEuro(482410);	 
?>
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...