Convertir números enteros a letras en PHP
Convertir números enteros a letras en PHP. Un script muy importante para el desarrollo de nuestros proyectos web, es muy necesario esta función, la función que se presenta a más adelante convierte los números a letras.
Sin embargo, les daré su uso para resultados en escribir el monto de venta en letras, a mí en particular me sucedió, no podía convertir números a letras, con este script que les compartiré logre instalar esa función que me convierte al cargar el navegador.
Convertir números enteros a letras en PHP
Aquí su funcionalidad del código en mención.
- El número a convertir a letras debe ser un entero positivo menor a 999,999, 999,999.
- La línea del código 3 declara un array con la representación alfabética de los números comprendidos entre 1 y 29. Esta característica se debe a que dichos números no siguen un diagrama para su escritura.
- La línea 11 nos declara un arreglo que contiene la conversión de los números 30, 40 … y 90.
- La línea del código 14 obtiene el módulo 10 de n.
- Si el módulo del código 10 de n es cero se regresa la posición asociada a n en el vector decenas(línea 11).
- Si el módulo del código 10 de n es diferente de cero. Se regresa la posición asociada a n en el vector decenas y se hace un llamado a la función básico.
- La línea del código 21 declara un arreglo para la representación alfabética de los números 100,200, … y 900.
- La línea del código 30 hace uso de un operador ternario para poder manejar la escritura de los números comprendidos entre 101 y 199.
- En la línea del código 39 se obtiene la longitud de n. En el caso de los miles está longitud varía entre 4 y 6.
substr($cadena, -3) obtiene los últimos 3 caracteres de la cadena, línea 41.
Función PHP:
<?php function basico($numero) { $valor = array ('uno','dos','tres','cuatro','cinco','seis','siete','ocho', 'nueve','diez','once','doce','trece','catorce','quince','dieciseis','diecisiete','dieciocho','diecinueve','veinte','veintiuno ','vientidos ','veintitrés ', 'veinticuatro','veinticinco', 'veintiséis','veintisiete','veintiocho','veintinueve'); return $valor[$numero - 1]; } function decenas($n) { $decenas = array (30=>'treinta',40=>'cuarenta',50=>'cincuenta',60=>'sesenta', 70=>'setenta',80=>'ochenta',90=>'noventa'); if( $n <= 29) return basico($n); $x = $n % 10; if ( $x == 0 ) { return $decenas[$n]; } else return $decenas[$n - $x].' y '. basico($x); } function centenas($n) { $cientos = array (100 =>'cien',200 =>'doscientos',300=>'trecientos', 400=>'cuatrocientos', 500=>'quinientos',600=>'seiscientos', 700=>'setecientos',800=>'ochocientos', 900 =>'novecientos'); if( $n >= 100) { if ( $n % 100 == 0 ) { return $cientos[$n]; } else { $u = (int) substr($n,0,1); $d = (int) substr($n,1,2); return (($u == 1)?'ciento':$cientos[$u*100]).' '.decenas($d); } } else return decenas($n); } function miles($n) { if($n > 999) { if( $n == 1000) {return 'mil';} else { $l = strlen($n); $c = (int)substr($n,0,$l-3); $x = (int)substr($n,-3); if($c == 1) {$cadena = 'mil '.centenas($x);} else if($x != 0) {$cadena = centenas($c).' mil '.centenas($x);} else $cadena = centenas($c). ' mil'; return $cadena; } } else return centenas($n); } function millones($n) { if($n == 1000000) {return 'un millón';} else { $l = strlen($n); $c = (int)substr($n,0,$l-6); $x = (int)substr($n,-6); if($c == 1) { $cadena = ' millón '; } else { $cadena = ' millones '; } return miles($c).$cadena.(($x > 0)?miles($x):''); } } function convertir($n) { switch (true) { case ( $n >= 1 && $n <= 29) : return basico($n); break; case ( $n >= 30 && $n < 100) : return decenas($n); break; case ( $n >= 100 && $n < 1000) : return centenas($n); break; case ($n >= 1000 && $n <= 999999): return miles($n); break; case ($n >= 1000000): return millones($n); } } $html =''; if( $_SERVER['REQUEST_METHOD'] == 'POST' ) { $html = " <p class='centrado'>".$_POST['numero'].' se escribe '; $html.= '<b>'.ucfirst(convertir($_POST['numero'])).'</b> '; echo $html; } ?> <form action="" method="post"> <input type="text" name="numero"> <button>Enviar</button> </form>
Formulario HTML
Este formulario envía los números haciendo uso de un formulario con el método post para ser procesados por la función de conversión de números a letras.
<form action="" method="post"> <input type="text" name="numero"> <button>Enviar</button> </form>
Conclusión
La opción de convertir de números a letras es muy usado por ejemplo en facturación electrónica, Inventarios, comprobantes de pagos, etc.
En este articulo usaremos funciones PHP para lograr el objetivo deseado.
Quizás esos otros artículos similares les ayude
- Números a letras con PHP usando Librería [Ejemplo completo]
- Convertir números enteros a letras en PHP
