comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOURCE] Convertir numero a texto con PHP (Class)

  • 1 Respuestas
  • 951 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kid_goth

  • *
  • Underc0der
  • Mensajes: 201
  • Actividad:
    0%
  • Reputación 3
  • Tu conocimiento se limita cuando dices NO PUEDO...
    • Ver Perfil
    • DC Projects
    • Email
« en: Septiembre 09, 2014, 04:15:46 pm »
Hola,

Necesitaba convertir los valores que se ingresaban en formato numero a texto por ejemplo 1000 -> mil y pues estaba por empezar a hacer la clase y que se me da por buscar y encontré una clase en stackoverflow pero en ingles entonces pues la traduje y le cambié algunas cosas como que por ejemplo allá dicen one thousand y aca puel mil y ya (mas no un mil) o que en muchas partes de habla inglesa llaman a los miles de millones como billones etc... Ademas de que lo dejej como una clase ya que estaban en funciones sueltas... sin mas les comparto ambos códigos (de paso el link pastebin) y la fuente :D

Ingles: No tienes permisos para ver links. Registrate o Entra con tu cuenta

Código: PHP
  1. <?php
  2.  
  3. /**
  4.  * English Number Converter - Collection of PHP functions to convert a number
  5.  *                            into English text.
  6.  *
  7.  * This exact code is licensed under CC-Wiki on Stackoverflow.
  8.  * http://creativecommons.org/licenses/by-sa/3.0/
  9.  *
  10.  * @link     http://stackoverflow.com/q/277569/367456
  11.  * @question Is there an easy way to convert a number to a word in PHP?
  12.  *
  13.  * This file incorporates work covered by the following copyright and
  14.  * permission notice:
  15.  *
  16.  *   Copyright 2007-2008 Brenton Fletcher. http://bloople.net/num2text
  17.  *   You can use this freely and modify it however you want.
  18.  *
  19.  * Class for POO by kid_goth
  20.  */
  21. class Num2TextEng {
  22.  
  23.     public function convertNumber($number) {
  24.         $output = "";
  25.  
  26.         if (No tienes permisos para ver links. Registrate o Entra con tu cuenta('/\./', $number)) {
  27.             No tienes permisos para ver links. Registrate o Entra con tu cuenta($integer, $fraction) = No tienes permisos para ver links. Registrate o Entra con tu cuenta(".", (string) $number);
  28.         } else {
  29.             $integer = (string) $number;
  30.             $fraction = NULL;
  31.         }
  32.  
  33.         if ($integer{0} == "-") {
  34.             $output = "negative ";
  35.             $integer = No tienes permisos para ver links. Registrate o Entra con tu cuenta($integer, "-");
  36.         } else if ($integer{0} == "+") {
  37.             $output = "positive ";
  38.             $integer = No tienes permisos para ver links. Registrate o Entra con tu cuenta($integer, "+");
  39.         }
  40.  
  41.         if ($integer{0} == "0") {
  42.             $output .= "zero";
  43.         } else {
  44.             $integer = No tienes permisos para ver links. Registrate o Entra con tu cuenta($integer, 36, "0", STR_PAD_LEFT);
  45.             $group = No tienes permisos para ver links. Registrate o Entra con tu cuenta(No tienes permisos para ver links. Registrate o Entra con tu cuenta($integer, 3, " "), " ");
  46.             $groups = No tienes permisos para ver links. Registrate o Entra con tu cuenta(" ", $group);
  47.  
  48.             $groups2 = No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  49.             foreach ($groups as $g) {
  50.                 $groups2[] = $this->convertThreeDigit($g{0}, $g{1}, $g{2});
  51.             }
  52.  
  53.             for ($z = 0; $z < No tienes permisos para ver links. Registrate o Entra con tu cuenta($groups2); $z++) {
  54.                 if ($groups2[$z] != "") {
  55.                     $output .= $groups2[$z] . $this->convertGroup(11 - $z) . (
  56.                             $z < 11 && !No tienes permisos para ver links. Registrate o Entra con tu cuenta('', No tienes permisos para ver links. Registrate o Entra con tu cuenta($groups2, $z + 1, -1)) && $groups2[11] != '' && $groups[11]{0} == '0' ? " and " : ", "
  57.                             );
  58.                 }
  59.             }
  60.  
  61.             $output = No tienes permisos para ver links. Registrate o Entra con tu cuenta($output, ", ");
  62.         }
  63.  
  64.         if ($fraction > 0) {
  65.             $output .= " point";
  66.             for ($i = 0; $i < No tienes permisos para ver links. Registrate o Entra con tu cuenta($fraction); $i++) {
  67.                 $output .= " " . $this->convertDigit($fraction{$i});
  68.             }
  69.         }
  70.  
  71.         return $output;
  72.     }
  73.  
  74.     private function convertGroup($index) {
  75.         switch ($index) {
  76.             case 11:
  77.                 return " decillion";
  78.             case 10:
  79.                 return " nonillion";
  80.             case 9:
  81.                 return " octillion";
  82.             case 8:
  83.                 return " septillion";
  84.             case 7:
  85.                 return " sextillion";
  86.             case 6:
  87.                 return " quintrillion";
  88.             case 5:
  89.                 return " quadrillion";
  90.             case 4:
  91.                 return " trillion";
  92.             case 3:
  93.                 return " billion";
  94.             case 2:
  95.                 return " million";
  96.             case 1:
  97.                 return " thousand";
  98.             case 0:
  99.                 return "";
  100.         }
  101.     }
  102.  
  103.     private function convertThreeDigit($digit1, $digit2, $digit3) {
  104.         $buffer = "";
  105.  
  106.         if ($digit1 == "0" && $digit2 == "0" && $digit3 == "0") {
  107.             return "";
  108.         }
  109.  
  110.         if ($digit1 != "0") {
  111.             $buffer .= $this->convertDigit($digit1) . " hundred";
  112.             if ($digit2 != "0" || $digit3 != "0") {
  113.                 $buffer .= " and ";
  114.             }
  115.         }
  116.  
  117.         if ($digit2 != "0") {
  118.             $buffer .= $this->convertTwoDigit($digit2, $digit3);
  119.         } else if ($digit3 != "0") {
  120.             $buffer .= $this->convertDigit($digit3);
  121.         }
  122.  
  123.         return $buffer;
  124.     }
  125.  
  126.     private function convertTwoDigit($digit1, $digit2) {
  127.         if ($digit2 == "0") {
  128.             switch ($digit1) {
  129.                 case "1":
  130.                     return "ten";
  131.                 case "2":
  132.                     return "twenty";
  133.                 case "3":
  134.                     return "thirty";
  135.                 case "4":
  136.                     return "forty";
  137.                 case "5":
  138.                     return "fifty";
  139.                 case "6":
  140.                     return "sixty";
  141.                 case "7":
  142.                     return "seventy";
  143.                 case "8":
  144.                     return "eighty";
  145.                 case "9":
  146.                     return "ninety";
  147.             }
  148.         } else if ($digit1 == "1") {
  149.             switch ($digit2) {
  150.                 case "1":
  151.                     return "eleven";
  152.                 case "2":
  153.                     return "twelve";
  154.                 case "3":
  155.                     return "thirteen";
  156.                 case "4":
  157.                     return "fourteen";
  158.                 case "5":
  159.                     return "fifteen";
  160.                 case "6":
  161.                     return "sixteen";
  162.                 case "7":
  163.                     return "seventeen";
  164.                 case "8":
  165.                     return "eighteen";
  166.                 case "9":
  167.                     return "nineteen";
  168.             }
  169.         } else {
  170.             $temp = $this->convertDigit($digit2);
  171.             switch ($digit1) {
  172.                 case "2":
  173.                     return "twenty-$temp";
  174.                 case "3":
  175.                     return "thirty-$temp";
  176.                 case "4":
  177.                     return "forty-$temp";
  178.                 case "5":
  179.                     return "fifty-$temp";
  180.                 case "6":
  181.                     return "sixty-$temp";
  182.                 case "7":
  183.                     return "seventy-$temp";
  184.                 case "8":
  185.                     return "eighty-$temp";
  186.                 case "9":
  187.                     return "ninety-$temp";
  188.             }
  189.         }
  190.     }
  191.  
  192.     private function convertDigit($digit) {
  193.         switch ($digit) {
  194.             case "0":
  195.                 return "zero";
  196.             case "1":
  197.                 return "one";
  198.             case "2":
  199.                 return "two";
  200.             case "3":
  201.                 return "three";
  202.             case "4":
  203.                 return "four";
  204.             case "5":
  205.                 return "five";
  206.             case "6":
  207.                 return "six";
  208.             case "7":
  209.                 return "seven";
  210.             case "8":
  211.                 return "eight";
  212.             case "9":
  213.                 return "nine";
  214.         }
  215.     }
  216.  
  217. }
  218.  
  219. /**
  220.  * Example of use:
  221.  *
  222.  * http://localhost/Num2TextEng.php?n=1000
  223.  * */
  224. $objNum2TextEng = new Num2TextEng();
  225. $_G = No tienes permisos para ver links. Registrate o Entra con tu cuenta(INPUT_GET, 'n');
  226. echo $objNum2TextEng->convertNumber($_G);
  227.  
  228. // Output: one thousand


Español: No tienes permisos para ver links. Registrate o Entra con tu cuenta

Código: PHP
  1. <?php
  2.  
  3. /**
  4.  * Tomado de:
  5.  *  Copyright 2007-2008 Brenton Fletcher. http://bloople.net/num2text
  6.  *  @link     http://stackoverflow.com/q/277569/367456
  7.  *  @question Is there an easy way to convert a number to a word in PHP?
  8.  *
  9.  * Bajo la licencia de CC-Wiki on Stackoverflow.
  10.  * http://creativecommons.org/licenses/by-sa/3.0/
  11.  *
  12.  *
  13.  * Modificado por kid_goth para uso en regiones de habla española
  14.  * En donde se 1.000.000.000 es igual a Mil millones y no a un
  15.  * billon como se usa en las regiones de habla inglesa. Ademas de agregar
  16.  * POO a la programacion.
  17.  *
  18.  *  @contact Twitter: @_kid_goth
  19.  */
  20. class Num2Text {
  21.  
  22.     public function convertNumber($number) {
  23.         $output = "";
  24.  
  25.         if (No tienes permisos para ver links. Registrate o Entra con tu cuenta('/\./', $number)) {
  26.             No tienes permisos para ver links. Registrate o Entra con tu cuenta($integer, $fraction) = No tienes permisos para ver links. Registrate o Entra con tu cuenta(".", (string) $number);
  27.         } else {
  28.             $integer = (string) $number;
  29.             $fraction = NULL;
  30.         }
  31.  
  32.         if ($integer{0} == "-") {
  33.             $output = "negativo ";
  34.             $integer = No tienes permisos para ver links. Registrate o Entra con tu cuenta($integer, "-");
  35.         } else if ($integer{0} == "+") {
  36.             $output = "positivo ";
  37.             $integer = No tienes permisos para ver links. Registrate o Entra con tu cuenta($integer, "+");
  38.         }
  39.  
  40.         if ($integer{0} == "0") {
  41.             $output .= "cero";
  42.         } else {
  43.             $integer = No tienes permisos para ver links. Registrate o Entra con tu cuenta($integer, 36, "0", STR_PAD_LEFT);
  44.             $group = No tienes permisos para ver links. Registrate o Entra con tu cuenta(No tienes permisos para ver links. Registrate o Entra con tu cuenta($integer, 3, " "), " ");
  45.             $groups = No tienes permisos para ver links. Registrate o Entra con tu cuenta(" ", $group);
  46.  
  47.             $groups2 = No tienes permisos para ver links. Registrate o Entra con tu cuenta();
  48.             foreach ($groups as $g) {
  49.                 $groups2[] = $this->convertThreeDigit($g{0}, $g{1}, $g{2});
  50.             }
  51.  
  52.             for ($z = 0; $z < No tienes permisos para ver links. Registrate o Entra con tu cuenta($groups2); $z++) {
  53.                 if ($groups2[$z] != "") {
  54.                     $rtnGroup = $this->convertGroup(11 - $z, $groups2[$z]);
  55.                     $output = No tienes permisos para ver links. Registrate o Entra con tu cuenta("/" . $rtnGroup . " /", "", $output);
  56.                     $output .= $groups2[$z] . $rtnGroup . (
  57.                             $z < 11 && !No tienes permisos para ver links. Registrate o Entra con tu cuenta('', No tienes permisos para ver links. Registrate o Entra con tu cuenta($groups2, $z + 1, -1)) && $groups2[11] != '' && $groups[11]{0} == '0' ? " " : " "
  58. //$z < 11 && !array_search('', array_slice($groups2, $z + 1, -1)) && $groups2[11] != '' && $groups[11]{0} == '0' ? " and " : ", "
  59.                             );
  60.                 }
  61.             }
  62.  
  63.             $output = No tienes permisos para ver links. Registrate o Entra con tu cuenta($output, ", ");
  64.         }
  65.  
  66.         if ($fraction > 0) {
  67.             $output .= " punto";
  68.             for ($i = 0; $i < No tienes permisos para ver links. Registrate o Entra con tu cuenta($fraction); $i++) {
  69.                 $output .= " " . $this->convertDigit($fraction{$i});
  70.             }
  71.         }
  72.  
  73.         return No tienes permisos para ver links. Registrate o Entra con tu cuenta('/un mil\b/', 'mil', $output);
  74.     }
  75.  
  76.     private function convertGroup($index, $valor = '') {
  77.         switch ($index) {
  78.             case 12:
  79.                 if ($valor != 'un') {
  80.                     return " sextillones";
  81.                 } else {
  82.                     return " sextillon";
  83.                 }
  84.             case 11:
  85.                 return " mil quintillones";
  86.             case 10:
  87.                 if ($valor != 'un') {
  88.                     return " quintillones";
  89.                 } else {
  90.                     return " quintillon";
  91.                 }
  92.             case 9:
  93.                 return " mil cuadrillones";
  94.             case 8:
  95.                 if ($valor != 'un') {
  96.                     return " cuadrillones";
  97.                 } else {
  98.                     return " cuadrillon";
  99.                 }
  100.             case 7:
  101.                 return " mil trillones";
  102.             case 6:
  103.                 if ($valor != 'un') {
  104.                     return " trillones";
  105.                 } else {
  106.                     return " trillon";
  107.                 }
  108.             case 5:
  109.                 return " mil billones";
  110.             case 4:
  111.                 if ($valor != 'un') {
  112.                     return " billones";
  113.                 } else {
  114.                     return " billon";
  115.                 }
  116.             case 3:
  117.                 return " mil millones";
  118.             case 2:
  119.                 if ($valor != 'un') {
  120.                     return " millones";
  121.                 } else {
  122.                     return " millon";
  123.                 }
  124.             case 1:
  125.                 return " mil";
  126.             case 0:
  127.                 return "";
  128.         }
  129.     }
  130.  
  131.     private function convertThreeDigit($digit1, $digit2, $digit3) {
  132.         $buffer = "";
  133.  
  134.         if ($digit1 == "0" && $digit2 == "0" && $digit3 == "0") {
  135.             return "";
  136.         }
  137.  
  138.         if ($digit1 != "0") {
  139.             $buffer .= $this->convertCientos($digit1);
  140.             if ($digit2 != "0" || $digit3 != "0") {
  141.                 $buffer .= " ";
  142.             }
  143.         }
  144.  
  145.         if ($digit2 != "0") {
  146.             $buffer .= $this->convertTwoDigit($digit2, $digit3);
  147.         } else if ($digit3 != "0") {
  148.             $buffer .= $this->convertDigit($digit3);
  149.         }
  150.  
  151.         return $buffer;
  152.     }
  153.  
  154.     private function convertTwoDigit($digit1, $digit2) {
  155.         if ($digit2 == "0") {
  156.             switch ($digit1) {
  157.                 case "1":
  158.                     return "diez";
  159.                 case "2":
  160.                     return "veinte";
  161.                 case "3":
  162.                     return "treinta";
  163.                 case "4":
  164.                     return "cuarenta";
  165.                 case "5":
  166.                     return "cincuenta";
  167.                 case "6":
  168.                     return "sesenta";
  169.                 case "7":
  170.                     return "setenta";
  171.                 case "8":
  172.                     return "ochenta";
  173.                 case "9":
  174.                     return "noventa";
  175.             }
  176.         } else if ($digit1 == "1") {
  177.             switch ($digit2) {
  178.                 case "1":
  179.                     return "once";
  180.                 case "2":
  181.                     return "doce";
  182.                 case "3":
  183.                     return "trece";
  184.                 case "4":
  185.                     return "catorce";
  186.                 case "5":
  187.                     return "quince";
  188.                 case "6":
  189.                     return "diez y seis";
  190.                 case "7":
  191.                     return "diez y siete";
  192.                 case "8":
  193.                     return "diez y ocho";
  194.                 case "9":
  195.                     return "diez y nueve";
  196.             }
  197.         } else {
  198.             $temp = $this->convertDigit($digit2);
  199.             switch ($digit1) {
  200.                 case "2":
  201.                     return "veinti$temp";
  202.                 case "3":
  203.                     return "treinta y $temp";
  204.                 case "4":
  205.                     return "cuarenta y $temp";
  206.                 case "5":
  207.                     return "cincuenta y $temp";
  208.                 case "6":
  209.                     return "sesenta y $temp";
  210.                 case "7":
  211.                     return "setenta y $temp";
  212.                 case "8":
  213.                     return "ochenta y $temp";
  214.                 case "9":
  215.                     return "noventa y $temp";
  216.             }
  217.         }
  218.     }
  219.  
  220.     private function convertCientos($digit) {
  221.         switch ($digit) {
  222.             case "0":
  223.                 return "cero";
  224.             case "1":
  225.                 return "ciento";
  226.             case "2":
  227.                 return "docientos";
  228.             case "3":
  229.                 return "trecientos";
  230.             case "4":
  231.                 return "cuatrocientos";
  232.             case "5":
  233.                 return "quinientos";
  234.             case "6":
  235.                 return "seicientos";
  236.             case "7":
  237.                 return "setecientos";
  238.             case "8":
  239.                 return "ochocientos";
  240.             case "9":
  241.                 return "novecientos";
  242.         }
  243.     }
  244.  
  245.     private function convertDigit($digit) {
  246.         switch ($digit) {
  247.             case "0":
  248.                 return "cero";
  249.             case "1":
  250.                 return "un";
  251.             case "2":
  252.                 return "dos";
  253.             case "3":
  254.                 return "tres";
  255.             case "4":
  256.                 return "cuatro";
  257.             case "5":
  258.                 return "cinco";
  259.             case "6":
  260.                 return "seis";
  261.             case "7":
  262.                 return "siete";
  263.             case "8":
  264.                 return "ocho";
  265.             case "9":
  266.                 return "nueve";
  267.         }
  268.     }
  269.  
  270. }
  271.  
  272. /**
  273.  * Ejemplo de Uso:
  274.  *
  275.  * http://localhost/Num2Text.php?n=1000
  276. **/
  277.  
  278. $objNum2Text = new Num2Text();
  279. $_G = No tienes permisos para ver links. Registrate o Entra con tu cuenta(INPUT_GET, 'n');
  280. echo $objNum2Text->convertNumber($_G);
  281.  
  282. // Salida: mil

Fuente: No tienes permisos para ver links. Registrate o Entra con tu cuenta
No tienes permisos para ver links. Registrate o Entra con tu cuenta

Acepta con humildad y aprecio que en la vida la muerte es inevitable y amarás ésta, adorando la muerte

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5380
  • Actividad:
    75%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #1 en: Septiembre 09, 2014, 04:29:24 pm »
Excelente bro!!
Te dejo puntos!

Saludos!
ANTRAX


 

¿Te gustó el post? COMPARTILO!



[SOURCE] Mensaje antes de header , pop up php , alert antes de header

Iniciado por graphixx

Respuestas: 1
Vistas: 2833
Último mensaje Octubre 05, 2014, 03:26:32 pm
por alexander1712
[Source] Verificar si una dirección IP es válida y si es IPv6 o IPv4

Iniciado por Polsaker

Respuestas: 1
Vistas: 1415
Último mensaje Octubre 22, 2014, 10:50:39 pm
por alexander1712
[Source] Verificar si una dirección IP está en una DNSBL

Iniciado por Polsaker

Respuestas: 2
Vistas: 1399
Último mensaje Octubre 22, 2014, 10:51:27 pm
por alexander1712
SMF Source Code Disclosure Seeker

Iniciado por hielasangre

Respuestas: 1
Vistas: 1471
Último mensaje Septiembre 06, 2011, 12:02:26 am
por FahD
wdCalendar colocar texto en titulo del evento en la vista dia

Iniciado por graphixx

Respuestas: 0
Vistas: 862
Último mensaje Agosto 02, 2015, 04:23:39 am
por graphixx