Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> преобразование числа в слова 
:(
    Опции темы
Kirill Baranov
  Дата 30.6.2004, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



Здравствуйте, подскажите плз как сделать так, чтобы число, то есть у меня уже есть переменная (допустим $summa) с данными, состоящими из числа (например 1234). Как сделать так, чтобы это число показывалось не в виде числа, а в виде слов, типа одна тысяча двести тридцать четыре??? я всё колбасился два дня над этой проблемой, но так ничего и не вышло, перепробовал множество функций...

может быть там сначала надо сделать разделитель для числа путем (number_format($summa));
разделитель у числа получается ","...разделитель есть.....да, только при дальнейших пробах разных функций я захожу в тупик....помогите пожалуйста!
PM MAIL   Вверх
Kirill Baranov
Дата 30.6.2004, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



в общем превратить $summa="1234" в вид "одна тысяча двести тридцать четыре".....мля, вы же профи, подскажите!
PM MAIL   Вверх
scriptcoder
Дата 30.6.2004, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 8.6.2004

Репутация: нет
Всего: нет



Посмотри в разделе алгоритмы может там есть.
Я только не понимаю зачем number_format.
Разбиваем число на группы по 3 символа, начиная с конца, и поехали
Последнее число в тройке меняем на один, два, три...
Предпоследнее на двадцать, тридцать... (исключение если оно 1, тогда меняем значение последней цифры 1 - одиннадцать, 2 - двенадцать ..., а это оставляем пустым)
Первое число в тройке (сто, двести, триста...)
Если эта тройка первая, то добавляем к получившейся строке тысяча, тысяч ( в зависимости от последнего числа в ней).
Если вторая, то миллион, миллионов.
--------------------
null
PM MAIL   Вверх
Kirill Baranov
Дата 30.6.2004, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



scriptcoder
а можно пример скриптика увидеть?
PM MAIL   Вверх
scriptcoder
Дата 30.6.2004, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 8.6.2004

Репутация: нет
Всего: нет



Если только завтра из дома принесу. Сейчас я на работе. Если завтра устроит ответь сразу же как прочтешь.
--------------------
null
PM MAIL   Вверх
skalex
Дата 30.6.2004, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



Во! Нашел в куче старого барахла скрипт, реализующий нечто подобное. Выкладываю в таком виде, в каком и нашел, я думаю разберешься... smile.gif
Код
<html>
<head>
<title> -= Перевод числа в словесную запись =- </title>
</head>
<body>
<?php

$r = array('рубль','рубля','рублей');
$k = array('копейка','копейки','копеек');

$ts = array('тысяча','тысячи','тысяч');
$ml = array('миллион','миллиона','миллионов');
$md = array('миллиард','миллиарда','миллиардов');

$ke = array('одна','две','три','четыре','пять','шесть','семь','восемь','девять');
$re = array('один','два','три','четыре','пять','шесть','семь','восемь','девять');

$d = array('десять','двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят','восемьдесят','девяносто');
$p = array('одиннадцать','двенадцать','тринадцать','четырнадцать','пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать');
$s = array('сто','двести','триста','четыреста','пятьсот','шестьсот','семьсот','восемьсот','девятьсот');

$number = $_GET['number'];

if ( $number )
{
  $dot = strpos(' '.$number,'.')-1;
  if ( $dot < 0 )
  {
     $intact = $number;
     $decimal = '';
  }
  else
  {
     $intact = substr($number,0,$dot);
     $decimal = substr($number,$dot+1,2);
  }
  echo $intact."<br>".$decimal."<br>";
  $str = '';

  // ------------------------------------
  // Дробная часть ----------------------
  // ------------------------------------
  if ( $decimal )
  {
     $f = substr($decimal,0,1);
     $l = substr($decimal,1,1);

     // Если дробная часть не ноль ---------
     if ( $l or $f )
     {
        // Если последняя цифра не ноль -------
        if ( $l )
        {
           // Если дробная часть не 11-19 --------
           if ( $f != '1' )
           {
              if ( $l == '1' )
              {
                 $str = $k[0];
              }
              if ( $l > '1' and $l < '5' )
              {
                 $str = $k[1];
              }
              if ( $l > '4' )
              {
                 $str = $k[2];
              }
              $str = $ke[$l-1].' '.$str;
              if ( $f )
              {
                 $str = $d[$f-1].' '.$str;
              }
           }
           // Если дробная часть 11-19 -----------
           else
           {
              $str = $k[2];
              $str = $p[$l-1].' '.$str;
           }
        }
        // Если дробная часть круглая ---------
        else
        {
           $str = $k[2];
           $str = $d[$f-1].' '.$str;
        }
     }
     // Если дробная часть ноль ------------
     else
     {
        $str = 'ноль копеек';
     }
  }
  else
  {
     $str = 'ноль копеек';
  }

  // ------------------------------------
  // Целая часть ------------------------
  // ------------------------------------
  if ( $intact )
  {
     $c = 0;
     $ln = strlen($intact);

     $st = $ln - $c*3 - 1;
     if ( $st >= 0 )
     {
        $l = substr($intact,$st,1);
     }
     $st = $ln - $c*3 - 2;
     if ( $st >= 0 )
     {
        $m = substr($intact,$st,1);
     }

     if ( $m == '1' )
     {
        $str = $r[2].' '.$str;
     }
     else
     {
        if ( $l == '1' )
        {
           $str = $r[0].' '.$str;
        }
        if ( $l > '1' and $l < '5' )
        {
           $str = $r[1].' '.$str;
        }
        if ( !$l or $l > '4' )
        {
           $str = $r[2].' '.$str;
        }
     }

     while( $c*3 < $ln )
     {
        $l = '';
        $m = '';
        $f = '';

        $st = $ln - $c*3 - 1;
        if ( $st >= 0 )
        {
           $l = substr($intact,$st,1);
        }
        $st = $ln - $c*3 - 2;
        if ( $st >= 0 )
        {
           $m = substr($intact,$st,1);
        }
        $st = $ln - $c*3 - 3;
        if ( $st >= 0 )
        {
           $f = substr($intact,$st,1);
        }

        if ( $m == '1' )
        {
           if ( $c )
           {
              if ( $c == 1 )
              $str = $ts[2].' '.$str;
              if ( $c == 2 )
              $str = $ml[2].' '.$str;
              if ( $c == 3 )
              $str = $md[2].' '.$str;
           }
           if ( $l )
           {
              $str = $p[$l-1].' '.$str;
           }
           else
           {
              $str = $d[$m-1].' '.$str;
           }
        }
        else
        {
           if ( $l )
           {
              if ( $c )
              {
                 if ( $l == '1' )
                 {
                    if ( $c == 1 )
                    {
                       $str = $ts[0].' '.$str;
                       $str = $ke[0].' '.$str;
                    }
                    if ( $c == 2 )
                    {
                       $str = $ml[0].' '.$str;
                       $str = $re[0].' '.$str;
                    }
                    if ( $c == 3 )
                    {
                       $str = $md[0].' '.$str;
                       $str = $re[0].' '.$str;
                    }
                 }
                 if ( $l > '1' and $l < '5' )
                 {
                    if ( $c == 1 )
                    {
                       $str = $ts[1].' '.$str;
                       $str = $ke[$l-1].' '.$str;
                    }
                    if ( $c == 2 )
                    {
                       $str = $ml[1].' '.$str;
                       $str = $re[$l-1].' '.$str;
                    }
                    if ( $c == 3 )
                    {
                       $str = $md[1].' '.$str;
                       $str = $re[$l-1].' '.$str;
                    }
                 }
                 if ( $l > '4' )
                 {
                    if ( $c == 1 )
                    {
                       $str = $ts[2].' '.$str;
                       $str = $ke[$l-1].' '.$str;
                    }
                    if ( $c == 2 )
                    {
                       $str = $ml[2].' '.$str;
                       $str = $re[$l-1].' '.$str;
                    }
                    if ( $c == 3 )
                    {
                       $str = $md[2].' '.$str;
                       $str = $re[$l-1].' '.$str;
                    }
                 }
              }
              else
              {
                 $str = $re[$l-1].' '.$str;
              }
           }
           else
           {
              if ( $c == 1 )
              $str = $ts[2].' '.$str;
              if ( $c == 2 )
              $str = $ml[2].' '.$str;
              if ( $c == 3 )
              $str = $md[2].' '.$str;
           }
           if ( $m )
           {
              $str = $d[$m-1].' '.$str;
           }
        }

        if ( $f )
        {
           $str = $s[$f-1].' '.$str;
        }

        $c += 1;
     }
  }

  echo $str;
}

?>
<br><form action=1-odin.php method=get>
<input type=text size=10 name=number value='<?php echo $number; ?>'>&nbsp;<input type=submit value='>>'>
</form>
</body>
</html>

Удачи! smile.gif
PM   Вверх
Kirill Baranov
Дата 30.6.2004, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



Mace
спасибо тебе огромное!!!
PM MAIL   Вверх
Opik
Дата 26.3.2005, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Mace
1) Это с php.spb.ru
2) В факе это есть smile
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0922 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.