PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Описание: На примере перевода цен товаров.
Поиск в теме | Версия для печати
valenok
Отправлено: 04 Февраля, 2007 - 18:16:42
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel
Помог: 3 раз(а)
Создаёшь два массива, число и название, потом переводишь.
Можешь доработать:
PHP:
скопировать код в буфер обмена
<?
$thousand [ 0
] = Array ( "" , "Тысяча " , "Две тысячи " , "Три тысячи " , "Четыре тысячи " , "Пять тысяч " , "Шесть тысяч " , "Семь тысяч " , "Восемь тысяч " , "Девять тысяч " , "Десять тысяч " ) ; $hundreds [ 0
] = Array ( "" , "сто " , "двести " , "тристо " , "четыресто " , "пятьсот " , "шестьсот " , "семьсот " , "восемьсот " , "девятьсот " ) ; $tens [ 0
] = Array ( "" , "двадцать " , "тридцать " , "сорок " , "пятьдесят " , "шестьдесят " , "семьдесят " , "восемьдесят " , "девяносто " ) ; $units [ 0
] = Array ( "" , "один" , "два" , "три" , "четыре" , "пять" , "шесть" , "семь" , "восемь" , "девять" ) ;
$thousand [ 1
] = Array ( 0
, 1000
, 2000
, 3000
, 4000
, 5000
, 6000
, 7000
, 8000
, 9000
, 10000
) ; $hundreds [ 1
] = Array ( 0
, 100
, 200
, 300
, 400
, 500
, 600
, 700
, 800
, 900
) ; $tens [ 1
] = Array ( 0
, 20
, 30
, 40
, 50
, 60
, 70
, 80
, 90
) ; $units [ 1
] = Array ( 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
) ;
$arg = Array ( $thousand , $hundreds , $tens , $units ) ;
$r1 = '' ; $r2 = 0 ;
for ( $i = 0 ; $i < 4 ; $i ++ ) { $rand = rand ( 0
, 8
) ; $r1 .= $arg [ $i ] [ 0] [ $rand ] ;
$r2 += $arg [ $i ] [ 1] [ $rand ] ;
}
echo "<center><h4>" . $r1 . "</h4>" . $r2 ;
Jakeryf
Отправлено: 05 Февраля, 2007 - 18:12:55
Новичок
Покинул форум
Сообщений всего: 31
Дата рег-ции: Янв. 2007
Откуда: System Virta
Помог: 0 раз(а)
PHP:
скопировать код в буфер обмена
print write_price_in_words( 5627. 99) ;
//цена прописью
function write_price_in_words( $price )
{
//отделяем рубли от копеек
{
$rub = substr ( $price , 0
, $point ) ; $kop = substr ( $price , $point + 1
) ; }
//преобразуем рубли
$str = write_number_in_words( $rub ) ;
//пишем рублей(ь,я)
$word = " рублей" ;
//последнее число
$last_digit = $rub [ ( strlen ( $rub ) - 1
) ] ; //предпоследнее число
$pred_last_digit = $rub [ ( strlen ( $rub ) - 2
) ] ; if ( $last_digit == '1' && $pred_last_digit != '1' )
$word = " рубль" ;
elseif ( ( $last_digit == '2' || $last_digit == '3' || $last_digit == '4' ) && $pred_last_digit != '1' )
$word = " рубля" ;
$str .= $word ;
//преобразуем копейки
{
$str .= write_number_in_words( $kop , 'femininum' ) ;
//пишем копейка (и, ек)
$word = " копеек" ;
//последнее число
$last_digit = $kop [ ( strlen ( $kop ) - 1
) ] ; //предпоследнее число
$pred_last_digit = $kop [ ( strlen ( $kop ) - 2
) ] ; if ( $last_digit == '1' && $pred_last_digit != '1' )
$word = " копейка" ;
elseif ( ( $last_digit == '2' || $last_digit == '3' || $last_digit == '4' ) && $pred_last_digit != '1' )
$word = " копейки" ;
$str .= $word ;
}
return $str ;
}
//допустимый диапазон чисел 0 .. 999999
//число прописью
function write_number_in_words ( $num , $genus = 'masculinum' )
{
//разряд: единицы, десятки, сотни, тысячи
$cur_order = "единицы" ;
$cur_thousands_order = "единицы" ;
if ( $num == 0)
return " 00" ;
for ( $i = $limit ; $i >= 0 ; $i -- )
{
//тысячный разряд
if ( $cur_order == "тысячи" )
{
//сотни
if ( $cur_thousands_order == "сотни" )
{
$str = write_units_hundreds( $num [ $i ] ) . $str ;
}
//десятки
if ( $cur_thousands_order == "десятки" )
{
$str = write_units_tens( $num [ $i ] , $next_digit ) . $str ;
$cur_thousands_order = "сотни" ;
$next_digit = '' ;
}
//единицы
if ( $cur_thousands_order == "единицы" )
{
if ( $num [ $i - 1 ] == "1" )
{
$next_digit = $num [ $i ] ;
$str = " тысяч" . $str ;
}
else
$str = write_units_thousands_units( $num [ $i ] ) . $str ;
$cur_thousands_order = "десятки" ;
}
}
//сотни
if ( $cur_order == "сотни" )
{
$str = write_units_hundreds( $num [ $i ] ) . $str ;
$cur_order = "тысячи" ;
}
//десятки
if ( $cur_order == "десятки" )
{
$str = write_units_tens( $num [ $i ] , $next_digit ) . $str ;
$cur_order = "сотни" ;
$next_digit = '' ;
}
//единицы
if ( $cur_order == "единицы" )
{
if ( $num [ $i - 1 ] == "1" )
$next_digit = $num [ $i ] ;
else
$str = write_units( $num [ $i ] , $genus ) ;
$cur_order = "десятки" ;
}
}
return ( $str ) ;
}
//принадлежит функции write_number_in_words
//преобразует десятки
function write_units_tens ( $tens , $next_digit )
{
$tens .= $next_digit ;
if ( $tens == 2) $str_tens = " двадцать" ;
if ( $tens == 3) $str_tens = " тридцать" ;
if ( $tens == 4) $str_tens = " сорок" ;
if ( $tens == 5) $str_tens = " пятьдесят" ;
if ( $tens == 6) $str_tens = " шестьдесят" ;
if ( $tens == 7) $str_tens = " семьдесят" ;
if ( $tens == 8) $str_tens = " восемьдесят" ;
if ( $tens == 9) $str_tens = " девяносто" ;
if ( $tens == 10) $str_tens = " десять" ;
if ( $tens == 11) $str_tens = " одиннадцать" ;
if ( $tens == 12) $str_tens = " двенадцать" ;
if ( $tens == 13) $str_tens = " тринадцать" ;
if ( $tens == 14) $str_tens = " четырнадцать" ;
if ( $tens == 15) $str_tens = " пятнадцать" ;
if ( $tens == 16) $str_tens = " шестнадцать" ;
if ( $tens == 17) $str_tens = " семнадцать" ;
if ( $tens == 18) $str_tens = " восемнадцать" ;
if ( $tens == 19) $str_tens = " девятнадцать" ;
return ( $str_tens ) ;
}
//принадлежит функции write_number_in_words
//преобразует сотни
function write_units_hundreds ( $hundreds )
{
if ( $hundreds == 1) $str_hundreds = " сто" ;
if ( $hundreds == 2) $str_hundreds = " двести" ;
if ( $hundreds == 3) $str_hundreds = " триста" ;
if ( $hundreds == 4) $str_hundreds = " четыреста" ;
if ( $hundreds == 5) $str_hundreds = " пятьсот" ;
if ( $hundreds == 6) $str_hundreds = " шестьсот" ;
if ( $hundreds == 7) $str_hundreds = " семьсот" ;
if ( $hundreds == 8) $str_hundreds = " восемьсот" ;
if ( $hundreds == 9) $str_hundreds = " девятьсот" ;
return ( $str_hundreds ) ;
}
//принадлежит функции write_number_in_words
//преобразует единицы тысячного разряда
function write_units_thousands_units ( $hundreds )
{
if ( $hundreds == 0) $str_hundreds = " тысяч" ;
if ( $hundreds == 1) $str_hundreds = " одна тысяча" ;
if ( $hundreds == 2) $str_hundreds = " две тысячи" ;
if ( $hundreds == 3) $str_hundreds = " три тысячи" ;
if ( $hundreds == 4) $str_hundreds = " четыре тысячи" ;
if ( $hundreds == 5) $str_hundreds = " пять тысяч" ;
if ( $hundreds == 6) $str_hundreds = " шесть тысяч" ;
if ( $hundreds == 7) $str_hundreds = " семь тысяч" ;
if ( $hundreds == 8) $str_hundreds = " восемь тысяч" ;
if ( $hundreds == 9) $str_hundreds = " девять тысяч" ;
return ( $str_hundreds ) ;
}
//принадлежит функции write_number_in_words
//преобразует единицы
function write_units ( $units , $genus = 'masculinum' )
{
if ( $genus == 'masculinum' )
{
if ( $units == 1) $str_units = " один" ;
if ( $units == 2) $str_units = " два" ;
}
if ( $genus == 'femininum' )
{
if ( $units == 1) $str_units = " одна" ;
if ( $units == 2) $str_units = " две" ;
}
if ( $units == 3) $str_units = " три" ;
if ( $units == 4) $str_units = " четыре" ;
if ( $units == 5) $str_units = " пять" ;
if ( $units == 6) $str_units = " шесть" ;
if ( $units == 7) $str_units = " семь" ;
if ( $units == 8) $str_units = " восемь" ;
if ( $units == 9) $str_units = " девять" ;
return ( $str_units ) ;
}
-----What's common between Halloween and Christmas? Every programmer knows: 31 oct = 25 dec.
Wange
Отправлено: 06 Июня, 2007 - 14:33:27
Гость
Покинул форум
Сообщений всего: 87
Дата рег-ции: Июль 2006
Откуда: Екатеринбург
Помог: 0 раз(а)
Jakeryf
на 79 строке выдается ошибка Uninitialized string offset: -1
PHP:
скопировать код в буфер обмена
77 if ( $cur_thousands_order == "единицы" )
78 {
79 if ( $num [ $i - 1 ] == "1" )
80 {
81 $next_digit = $num [ $i ] ;
82 $str = " тысяч" . $str ;
83 }
84 else
85 $str = write_units_thousands_units( $num [ $i ] ) . $str ;
86 $cur_thousands_order = "десятки" ;
87 }
функция очень хороша. из классических. с разбиением по родам =).
http://kladovka[dot]net[dot]ru/delphibas[dot][dot][dot]ert&id=10264 - здесь для дельфи лежит подобная, там еще придуман нейтральный род =D
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB