[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цифры в буквы
maximka787
Всем привет мужики. Долго делал работу по генерации таблиц, а потом столкнулся с проблемой вывода расшифровки суммы.

Ни где не могу найти по теме информации. Не подскажете может есть уже популярное решение? или что именно искать в сети, тк по запросу преобразование букв в цифры с помощью php нет ничего.



Спустя 2 минуты, 57 секунд (9.03.2011 - 15:23) DedMorozzz написал(а):
Цитата
преобразование букв в цифры
www.Balack_Magic.com

Поясни что хочешь. Ибо пока что не связанно никак.

Спустя 2 минуты, 2 секунды (9.03.2011 - 15:26) maximka787 написал(а):
Ну просто преобразовать сумму 555 в пятьсот пятьдесят пять рублей. в итоге. но найти не могу в поисковике тк вообще такое ощущение что никто не делал

Спустя 1 минута, 33 секунды (9.03.2011 - 15:27) Админ написал(а):
эво оно как - тут серьёзный скрипт получается если со склонениями

Спустя 15 минут, 19 секунд (9.03.2011 - 15:42) DedMorozzz написал(а):
100% была такая тема. Аруха_чехов кажись занимался (как-то так ник) по форуму глянь.

Спустя 3 минуты, 48 секунд (9.03.2011 - 15:46) inpost написал(а):
Скрипт не мой, содержание не смотрел, знаю лишь то, что работает:
function num2str($inn, $stripkop=false) { 
$nol = 'ноль';
$str[100]= array('','сто','двести','триста','четыреста','пятьсот','шестьсот', 'семьсот', 'восемьсот','девятьсот');
$str[11] = array('','десять','одиннадцать','двенадцать','тринадцать', 'четырнадцать','пятнадцать','шестнадцать','семнадцать', 'восемнадцать','девятнадцать','двадцать');
$str[10] = array('','десять','двадцать','тридцать','сорок','пятьдесят', 'шестьдесят','семьдесят','восемьдесят','девяносто');
$sex = array(
array('','один','два','три','четыре','пять','шесть','семь', 'восемь','девять'),// m
array('','одна','две','три','четыре','пять','шесть','семь', 'восемь','девять') // f
);
$forms = array(
array('копейка', 'копейки', 'копеек', 1), // 10^-2
array('рубль', 'рубля', 'рублей', 0), // 10^ 0
array('тысяча', 'тысячи', 'тысяч', 1), // 10^ 3
array('миллион', 'миллиона', 'миллионов', 0), // 10^ 6
array('миллиард', 'миллиарда', 'миллиардов', 0), // 10^ 9
array('триллион', 'триллиона', 'триллионов', 0), // 10^12
);
$out = $tmp = array();
// Поехали!
$tmp = explode('.', str_replace(',','.', $inn));
$rub = number_format($tmp[ 0], 0,'','-');
if ($rub== 0) $out[] = $nol;
// нормализация копеек
$kop = isset($tmp[1]) ? substr(str_pad($tmp[1], 2, '0', STR_PAD_RIGHT), 0,2) : '00';
$segments = explode('-', $rub);
$offset = sizeof($segments);
if ((int)$rub== 0) { // если 0 рублей
$o[] = $nol;
$o[] = morph( 0, $forms[1][ 0],$forms[1][1],$forms[1][2]);
}
else {
foreach ($segments as $k=>$lev) {
$sexi= (int) $forms[$offset][3]; // определяем род
$ri = (int) $lev; // текущий сегмент
if ($ri== 0 && $offset>1) {// если сегмент==0 & не последний уровень(там Units)
$offset--;
continue;
}
// нормализация
$ri = str_pad($ri, 3, '0', STR_PAD_LEFT);
// получаем циферки для анализа
$r1 = (int)substr($ri, 0,1); //первая цифра
$r2 = (int)substr($ri,1,1); //вторая
$r3 = (int)substr($ri,2,1); //третья
$r22= (int)$r2.$r3; //вторая и третья
// разгребаем порядки

if ($ri>99) $o[] = $str[100][$r1]; // Сотни
if ($r22>20) {// >20
$o[] = $str[10][$r2];
$o[] = $sex[ $sexi ][$r3];
}
else { // <=20
if ($r22>9) $o[] = $str[11][$r22-9]; // 10-20
elseif($r22> 0) $o[] = $sex[ $sexi ][$r3]; // 1-9
}
// Рубли
$o[] = morph($ri, $forms[$offset][ 0],$forms[$offset][1],$forms[$offset][2]);
$offset--;
}
}

// Копейки
if (!$stripkop) {
$o[] = $kop;
$o[] = morph($kop,$forms[ 0][ 0],$forms[ 0][1],$forms[ 0][2]);
}
return preg_replace("/\s{2,}/",' ',implode(' ',$o));
}

/**
* Склоняем словоформу
*/

function morph($n, $f1, $f2, $f5) {
$n = abs($n) % 100;
$n1= $n % 10;
if ($n>10 && $n<20) return $f5;
if ($n1>1 && $n1<5) return $f2;
if ($n1==1) return $f1;
return $f5;
}
$pay = num2str($_GET['pay']);

Спустя 7 минут, 12 секунд (9.03.2011 - 15:53) maximka787 написал(а):
Благодарю, попробую реализовать


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.