очень нужен скрипт

Mamont

Guest
очень нужен скрипт

народ мне нужен скриптик который переделывает числовое значение в эквевелентное ему значение из слов (например 2315 = две тысячи триста пятнадцать) не подскажете где можно нарыть?

я сёдня весь день писал такой и чёта он не работает вот он посмотрите пожалуста и скажите че тут не так???
PHP:
//
//  === Functsia kotoraia peredelivaet liuboe chislovoe znachenie do 999999 v ekvivalentnoe bukvennoe ===
//
function get_string_summa($sm){
// 1. zadaiutsea massivi so znachenieami
$1 = array(); $1_2 = array(); $2 = array(); $3 = array(); $4 = array(); $5 = array(); $6 = array();
$1[0] = '';
$1[1] = 'один';
$1[2] = 'два';
$1[3] = 'три';
$1[4] = 'четыре';
$1[5] = 'пять';
$1[6] = 'шесть';
$1[7] = 'семь';
$1[8] = 'восемь';
$1[9] = 'девять';

$12[1] = 'десять';
$12[1] = 'одиннадцать';
$12[2] = 'двенадцать';
$12[3] = 'тринадцать';
$12[4] = 'четырнадцать';
$12[5] = 'пятнадцать';
$12[6] = 'шестнадцать';
$12[7] = 'семнадцать';
$12[8] = 'восемнадцать';
$12[9] = 'девятнадцать';

$2[0] = '';
$2[1] = 'десять';
$2[2] = 'двалцать';
$2[3] = 'тридцать';
$2[4] = 'сорок';
$2[5] = 'пятьдесят';
$2[6] = 'шестьдесят';
$2[7] = 'семьдесят';
$2[8] = 'восемьдесят';
$2[9] = 'девяносто';

$3[0] = '';
$3[1] = 'сто';
$3[2] = 'двести';
$3[3] = 'триста';
$3[4] = 'четыреста';
$3[5] = 'пятьсот';
$3[6] = 'шестьсот';
$3[7] = 'семьсот';
$3[8] = 'восемьсот';
$3[9] = 'девятьсот';

$4[0] = ' тысяч';
$4[1] = 'одна тысяча';
$4[2] = 'две тысячи';
$4[3] = 'три тысячи';
$4[4] = 'четыре тысячи';
$4[5] = 'пять тысяч';
$4[6] = 'шесть тысяч';
$4[7] = 'семь тысяч';
$4[8] = 'восемь тысяч';
$4[9  ] = 'девять тысяч';

for($i=0;$i<10;$i++){
$5[$i] = $2[$i];
}

for($i=0;$i<10;$i++){
$6[$i] = $3[$i];
}
// opredeleaetsea cislo 
$summa_str = (string)$sm; // perevodim int v string
$i = 1;
while ($i < strlen($summa_str )) : // tsikl pervogo pareadka
$k = $i*-1;
if(substr($summa_str ,-2,1) == '1'){  // dlea 10<x<20
   for($j=0;$j<=9;$j++){ // tsikl vtorogo poreadka
    if(substr($summa_str ,-1,1) == (string)$j) $ss = $12[$j];
   } 
	$i += 2;   
} else if(($i==4) && (substr($summa_str ,-5,1) == (string)$j)) { // dlea 10000<x<20000
       for($j=0;$j<=9;$j++){
    if(substr($summa_str ,-5,1) == (string)$j) $ss = $12[$j]." тысяч ";
	  }
  	$i += 2;   
} else {       // dlea obicnih
       for($j=0;$j<=9;$j++){   
	       if(substr($summa_str ,$k,1) == (string)$j) $ss = " ".$$i[$j];
       }
	   $i++;
}
endwhile;
$ss = "Сумма: ".$ss." лей 00 бань";
echo $ss;
return $ss;
}
заранее спасибо!!!
 

Varg

Guest
Переменная не может начинаться с цифры.
 

Varg

Guest
Сделай замену всех $1 -> $num1, $2 -> $num2... Может и заработает. А если нет, то запость сюда сообщение об ошибках.
 

EkyT

Guest
ээээ.... што то такое делал когда-то, сейчас в нычку посмотрю

ага, вот.
вызов i2x(int,0|1,'r|d')
т.е. для числа 125.36 надо дернуть ф-ю дважды для целой (2-й параметр=0) и дробной (=1 соотвю) части суммы. ну и 3-й параметр валюта (r для рублей, d для долларов)

PHP:
function i2x($i, $type, $curr)
{

 if (intval($i) <= 0) return;

 $base = array('','один','два','три','четыре','пять','шесть','семь','восемь','девять');
 $ebase = array('','одна','две');
 $hbase = array('','сто','двести','триста','четыреста','пятьсот','шестьсот','семьсот','восемьсот','девятьсот');
 $dbase = array('','десять','двадцать','тридцать','сорок','пятьдесят','шестьдесят','семьдесят','восемьдесят','девяносто');
 $abase = array('','одинадцать','двенадцать','тринадцать','четырнадцать','пятнадцать','шестнадцать','семнадцать','восемнадцать','девятнадцать');

 $sel = array(
    array(''),
    array('тысяч','тысяча','тысячи','тысячи','тысячи','тысяч','тысяч','тысяч','тысяч','тысяч','тысяч'),
    array('миллионов','миллион','миллиона','миллиона','миллиона','миллионов','миллионов','миллионов','миллионов','миллионов','миллионов'),
    array(''));
 $doll = array(
    array('долларов','доллар','доллара','доллара','доллара','долларов','долларов','долларов','долларов','долларов'),
    array('центов','цент','цента','цента','цента','центов','центов','центов','центов','центов')
 );
 $rub = array(
    array('рублей','рубль','рубля','рубля','рубля','рублей','рублей','рублей','рублей','рублей'),
    array('копеек','копейка','копейки','копейки','копейки','копеек','копеек','копеек','копеек','копеек')
 );

 $len = strlen($i) - 1;
 $w=$i[$len];
 for ($tree=0; $tree <= $len/3; $tree++)
 {
    $t = '';
    for ($count=0; $count <= 2; $count++)
    {
        $index = $count + $tree*3;
        if ( $index <= $len)
        {
            $ch = substr ($i,$len - $index,1);
            if ($count == 0)
            {
                $tag = $ch;
                if (($type == 1 && $curr == 'r' && ($ch == 1 || $ch == 2 )) ||
                    ($tree == 1 && ($ch == 1 || $ch == 2 )))
                {
                    $t = $ebase[$ch] . ' ' . $t;
                }
                else
                {
                    $t = $base[$ch] . ' ' . $t;
                }
            }
            else if ( $count == 1)
            {
                if ($ch != 1)
                {
                    $t = $dbase[$ch] . ' ' . $t ;
                }
                else
                {
                    $t = $abase[$tag];
                }
           }
           else
           {
               $t = $hbase[$ch] . ' ' . $t;
           }
        }
    }
    $out = $t . ' ' . $sel[$tree][$tag] . ' ' . $out  ;
 }
 if ($curr == 'd') return $out.' '.$doll[$type][$w];
 else return $out.' '.$rub[$type][$w];
}
 

Mamont

Guest
сэнкс чувак очень помог спасибо огромное я и сам бы догнал просто сроки поджимают до немогу
 

Mamont

Guest
народ а не подскажете где можно пример по поиску посмотреть с какимнибудь алгоритмом не сложным???
 

Mamont

Guest
по поиску в строке длинной
вот например нада мне в строке "фывар щшфыгвар щшыфгвар шыфгвар ыфгш" проверить наличие "фывар" вот я ввожу в функцию например поиск инфу типа -
поиск("фывар","фывар щшфыгвар щшыфгвар шыфгвар ыфгш")

а она мне возвращает 1 (оно же правда) после чего я извлекаю id и вывожу ссылку на эту строку.
 

Mamont

Guest
strstr() stristr() strpos() strrpos() :
Вот это мне и нужно а не мог бы ктото привести простенький пример как это использовать с примерами?
 

Mamont

Guest
не , все народ я сделал с stristr() и вроде всё кул :)
я и не думал что всё так легло думал факаться прийдётся а тут как массив в паскале сделать и даже легче =)

Короче спасибо !!!
 

Varg

Guest
stristr() - не обращает внимания на регистр. Для точного совпадения нужно strstr()

Это так, если ман читать никак..
 
Сверху