1. Создаем внешний файл propis.php, чтобы не загромождать код. При необходимости использовать функцию, просто подключаем его в коде страницы:
require_once "propis.php";
2. Во внешний файл propis.php заливаем этот код:
<?
function propis($rub,$val)
{
// $val - валюта, записывается в первые три массива: 0-шт,1-руб,2-долларов,3-евро
if ($val==0) {
$dop0 = Array("","тысяч","миллионов","миллиардов");
$dop1 = Array("","тысяча","миллион","миллиард");
$dop2 = Array("","тысячи","миллиона","миллиарда");
}
if ($val==1) {
$dop0 = Array("рублей","тысяч","миллионов","миллиардов");
$dop1 = Array("рубль","тысяча","миллион","миллиард");
$dop2 = Array("рубля","тысячи","миллиона","миллиарда");
}
if ($val==2) {
$dop0 = Array("долларов","тысяч","миллионов","миллиардов");
$dop1 = Array("доллар","тысяча","миллион","миллиард");
$dop2 = Array("доллара","тысячи","миллиона","миллиарда");
}
if ($val==3) {
$dop0 = Array("евро","тысяч","миллионов","миллиардов");
$dop1 = Array("евро","тысяча","миллион","миллиард");
$dop2 = Array("евро","тысячи","миллиона","миллиарда");
}
$s1 = Array("","один","два","три","четыре","пять","шесть","семь","восемь","девять");
$s11 = Array("","одна","две","три","четыре","пять","шесть","семь","восемь","девять");
$s2 = Array("","десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто");
$s22 = Array("десять","одиннадцать","двенадцать","тринадцать","четырнадцать","пятнадцать","шестнадцать","семнадцать","восемнадцать","девятнадцать");
$s3 = Array("","сто","двести","триста","четыреста");
if($rub==0)
{// если это 0
return "ноль ".$dop0[0];
}
// разбиваем полученное число на тройки и загоняем в массив $triplet
$t_count = ceil(strlen($rub)/3);
for($i=0;$i<$t_count;$i++)
{
$k = $t_count - $i - 1;
$triplet[$k] = $rub%1000;
$rub = floor($rub/1000);
}
// пробегаем по триплетам
for($i=0;$i<$t_count;$i++)
{
$t = $triplet[$i]; // это текущий триплет - с ним и работаем
$k = $t_count - $i - 1;
$n1 = floor($t/100);
$n2 = floor(($t-$n1*100)/10);
$n3 = $t-$n1*100-$n2*10;
// обрабатываем сотни
if($n1<5) $res .= $s3[$n1]." ";
elseif($n1) $res .= $s1[$n1]."сот ";
if($n2>1)
{// второй десяток
$res .= $s2[$n2]." ";
if($n3 and $k==1)
{// если есть единицы в триплете и это триплет ТЫСЯЧ
$res .= $s11[$n3]." ";
}
elseif($n3)
{
$res .= $s1[$n3]." ";
}
}
elseif($n2==1)
{
$res .= $s22[$n3]." ";
}
elseif($n3 and $k==1)
{// если есть единицы в триплете и это триплет ТЫСЯЧ
$res .= $s11[$n3]." ";
}
elseif($n3)
{
$res .= $s1[$n3]." ";
}
// прилепляем в конец триплета коммент
if($n3==1 and $n2!=1)
{// в конце триплета стоит 1, но не 11.
$res .= $dop1[$k]." ";
}
elseif($n3>1 and $n3<5 and $n2!=1)
{// в конце триплета стоит 2, 3 или 4, но не 12, 13 или 14
$res .= $dop2[$k]." ";
}
elseif($t or $k==0)
{
$res .= $dop0[$k]." ";
}
}
return $res;
}
?>
3. Если нам нужно вывести число прописью (для указания штук, например), пишем такую формулу:
$html=propis($rub,0); echo $html;
здесь первая переменная - число, которое нужно вывести прописью
4. Если нам нужно вывести сумму в рублях, то пишем такую формулу:
$html=propis($rub,1); echo $html;
5. Если в долларах, то такую:
$html=propis($rub,2); echo $html;
6. Если в евро, то такую:
$html=propis($rub,3); echo $html;
В принципе, если посмотреть на код, то его легко адаптировать хоть к тугрикам, хоть к юаням :-)
Удачного использования!
Сообщение отредактировал Александр Пономарев: 20 Январь 2016 - 14:16













