remove - strip_tags php ejemplo
PHP: NĂºmero expresado en palabras (3)
En caso de utilizar Yii2 puede hacerlo de la siguiente manera:
$sum = 100500;
echo Yii::$app->formatter->asSpellout($sum);
Esto imprime $sum
enunciado en el idioma de su aplicación.
reference documentos
Esta pregunta ya tiene una respuesta aquí:
¿Hay alguna función que exprese cualquier número dado en palabras?
Por ejemplo:
Si un número es 1432
, entonces esta función devolverá "mil cuatrocientos treinta y dos".
Puede hacer esto de muchas maneras. Menciono aquí dos formas al usar la clase NumberFormatter como se menciona en la respuesta de Martindilling (si tiene la versión de php 5.3.0 o superior y también la extensión de PECL 1.0.0 o superior) o con la siguiente personalización función.
function convertNumberToWord($num = false)
{
$num = str_replace(array('','', '' ''), '''' , trim($num));
if(! $num) {
return false;
}
$num = (int) $num;
$words = array();
$list1 = array('''', ''one'', ''two'', ''three'', ''four'', ''five'', ''six'', ''seven'', ''eight'', ''nine'', ''ten'', ''eleven'',
''twelve'', ''thirteen'', ''fourteen'', ''fifteen'', ''sixteen'', ''seventeen'', ''eighteen'', ''nineteen''
);
$list2 = array('''', ''ten'', ''twenty'', ''thirty'', ''forty'', ''fifty'', ''sixty'', ''seventy'', ''eighty'', ''ninety'', ''hundred'');
$list3 = array('''', ''thousand'', ''million'', ''billion'', ''trillion'', ''quadrillion'', ''quintillion'', ''sextillion'', ''septillion'',
''octillion'', ''nonillion'', ''decillion'', ''undecillion'', ''duodecillion'', ''tredecillion'', ''quattuordecillion'',
''quindecillion'', ''sexdecillion'', ''septendecillion'', ''octodecillion'', ''novemdecillion'', ''vigintillion''
);
$num_length = strlen($num);
$levels = (int) (($num_length + 2) / 3);
$max_length = $levels * 3;
$num = substr(''00'' . $num, -$max_length);
$num_levels = str_split($num, 3);
for ($i = 0; $i < count($num_levels); $i++) {
$levels--;
$hundreds = (int) ($num_levels[$i] / 100);
$hundreds = ($hundreds ? '' '' . $list1[$hundreds] . '' hundred'' . '' '' : '''');
$tens = (int) ($num_levels[$i] % 100);
$singles = '''';
if ( $tens < 20 ) {
$tens = ($tens ? '' '' . $list1[$tens] . '' '' : '''' );
} else {
$tens = (int)($tens / 10);
$tens = '' '' . $list2[$tens] . '' '';
$singles = (int) ($num_levels[$i] % 10);
$singles = '' '' . $list1[$singles] . '' '';
}
$words[] = $hundreds . $tens . $singles . ( ( $levels && ( int ) ( $num_levels[$i] ) ) ? '' '' . $list3[$levels] . '' '' : '''' );
} //end for loop
$commas = count($words);
if ($commas > 1) {
$commas = $commas - 1;
}
return implode('' '', $words);
}
Use la clase NumberFormatter que se encuentra en php;)
$f = new NumberFormatter("en", NumberFormatter::SPELLOUT);
echo $f->format(1432);
Eso produciría "mil cuatrocientos treinta y dos"