GedroX Posted February 20, 2006 Report Share Posted February 20, 2006 Uz ātru roku uzrakstīju funkciju number2string, ar kuras palīdzību var pārveidot skaitli tā tekstuālā pierakstā. Varbūt kādam noder. Kļūdas, komentāri? Varbūt kautkur jau bija (es nevarēju atrast)? Link to comment Share on other sites More sharing options...
Delfins Posted February 20, 2006 Report Share Posted February 20, 2006 Un ja man vajag angliski ? Link to comment Share on other sites More sharing options...
GedroX Posted February 20, 2006 Author Report Share Posted February 20, 2006 Tad tev pilnībā pietiek ar jau izveidotu PEAR klasi. Link to comment Share on other sites More sharing options...
Delfins Posted February 20, 2006 Report Share Posted February 20, 2006 Nē, es negribu izmantot PEAR! Link to comment Share on other sites More sharing options...
GedroX Posted February 20, 2006 Author Report Share Posted February 20, 2006 (edited) Nu tādā gadījumā savieto vajadzīgās tekstuālās konstantes manā skriptā, papildus atdalot gadījumus ar skaitļiem 11, 12. Liekās, ka nevajadzētu būt problēmām. Un kas tev nepatīk PEAR klasēs? Vari jau tikai konkrēto funkciju no tās izfiltrēt. Edited February 20, 2006 by GedroX Link to comment Share on other sites More sharing options...
Delfins Posted February 20, 2006 Report Share Posted February 20, 2006 Un priekš kam bija jātaisa sava f-ja, ja jau ir PEAR? ;) Kāda starpība, kas man patīk un kas nepatīk... f-ja der tikai LV.. un tas nerulz.. Link to comment Share on other sites More sharing options...
Klez Posted February 20, 2006 Report Share Posted February 20, 2006 te pat kkur bija ... http://paste.php.lv/2304 Venom skatiijumaa :) Link to comment Share on other sites More sharing options...
GedroX Posted February 21, 2006 Author Report Share Posted February 21, 2006 te pat kkur bija ... [url=http://paste.php.lv/2304]http://paste.php.lv/2304[/url] Venom skatiijumaa :) Smieklīgi! Vispār to kodu kāds ir testējis??? echo saynum(100); ..atgriež.. viens simts nulle Un perfektu f-ju visām valodām nereāli uztaisīt. Vienalga pa vienai jāimplementē. P.S. Paldies par atbalstu. Tomēr gribās arī dalīties ar to, kas sanāk, bet te notiek tikai [censored]... Link to comment Share on other sites More sharing options...
Delfins Posted February 21, 2006 Report Share Posted February 21, 2006 Kurš saka ka vajag vienā f-jā? Es bi dotu priekšroku klasei.. Link to comment Share on other sites More sharing options...
GedroX Posted February 21, 2006 Author Report Share Posted February 21, 2006 Bā! Nu gan beztolkā tev bazars. Nu sākumā tev PEAR nepatīk, tagad saki, ka vajaga klasi.. Manu funkcju iemet PEAR klasē un ir tev klase ar vairāku valodu atbalstu, tajā skaitā arī LV. Link to comment Share on other sites More sharing options...
bubu Posted February 22, 2006 Report Share Posted February 22, 2006 Venom fjai bija viens sīks gļuks kautkur. Uz sitiena neatceros. Bet citādi viņa strādāja ļoti labi. Link to comment Share on other sites More sharing options...
darksign Posted December 20, 2010 Report Share Posted December 20, 2010 (edited) Ievadot skaitli "151911351" number2string izvada: simtu piecdesmit viens miljons deviņi simti vienpadsmit tūkstotis trīs simti piecdesmit viens Kaut gan, vajadzētu: simtu piecdesmit viens miljons deviņi simti viendpadsmit tūkstoši trīs simti piecdesmit viens Kā arī, ieteicams, ja lieto priekš grāmatvedības rēķiniem, tad lietot formu "viens simts ...", nevis "simtu ..." Kā arī vārds miljons, rakstās "miljons" nevis "milijons" Edited December 20, 2010 by darksign Link to comment Share on other sites More sharing options...
darksign Posted December 20, 2010 Report Share Posted December 20, 2010 (edited) Ievadot skaitli "151911351" number2string izvada: simtu piecdesmit viens miljons deviņi simti vienpadsmit tūkstotis trīs simti piecdesmit viens Kaut gan, vajadzētu: simtu piecdesmit viens miljons deviņi simti viendpadsmit tūkstoši trīs simti piecdesmit viens Kā arī, ieteicams, ja lieto priekš grāmatvedības rēķiniem, tad lietot formu "viens simts ...", nevis "simtu ..." Kā arī vārds miljons, rakstās "miljons" nevis "milijons" Te būs izlabotās funkcijas: if (!function_exists('number2string')) { function number2string($n) { $n = (int)$n; if ($n < 0) $b = 'mīnus '; $n = abs($n); if ($n == '0') return 'nulle'; else return $b . _number2stringBig($n); } } if (!function_exists('_number2stringBig')) { function _number2stringBig($n) { if ($n == '0') return; $e = Array( Array( '1' => 'tūkstotis', '2' => 'miljons', '3' => 'miljards', ), Array( '1' => 'tūkstoši', '2' => 'miljoni', '3' => 'miljardi', ), ); $n = (string)(int)abs($n); $length = strlen((string)$n); $pow = ceil($length / 3) - 1; $digits = ($length - 1) % 3 + 1; $begin = substr($n, 0, $digits); $s = _number2stringSmall($begin); if ($pow > 0) { $end = substr($n, $digits); if (substr($begin, -1) == 1 && substr($begin, 0, 1) == 1) { $middle = $e[0][$pow]; } else { $middle = $e[1][$pow]; } $s .= ' ' . $middle; $s .= ' ' . _number2stringBig($end); } return $s; } } if (!function_exists('_number2stringSmall')) { function _number2stringSmall($n) { $digits = Array('', 'viens', 'divi', 'trīs', 'četri', 'pieci', 'seši', 'septiņi', 'astoņi', 'deviņi'); $preDigits = Array('', 'vien', 'div', 'trīs', 'četr', 'piec', 'seš', 'septiņ', 'astoņ', 'deviņ'); $n = (string)(int)$n; $l = strlen($n); if ($l > 3) return false; if ($l == 3) { return ($n{0} == 1 ? (substr($n, 1) == '00' ? 'simts' : 'simtu') : $digits[$n{0}] . ' ' . 'simti') . ' ' . _number2stringSmall(substr($n, 1)); } else { if ($l == 1) return $digits[$n]; if ($n{0} == 1) { if ($n == '10') return 'desmit'; return $preDigits[$n{1}] . 'padsmit'; } $s = $preDigits[$n{0}] . 'desmit'; if ($n{1} != '0') { $s .= ' ' . $digits[$n{1}]; } return $s; } } } p.s. nepatīk paste.php.lv un nelietošu tīši, kamēr nebūs ieviesta tik nepieciešama lieta, kā utf8 kodējums ;)p Edited December 20, 2010 by darksign Link to comment Share on other sites More sharing options...
daGrevis Posted December 20, 2010 Report Share Posted December 20, 2010 Paldies par fn. ) Link to comment Share on other sites More sharing options...
darksign Posted December 20, 2010 Report Share Posted December 20, 2010 ipk.. ;) Kā arī, ieteicams, ja lieto priekš grāmatvedības rēķiniem, tad lietot formu "viens simts ...", nevis "simtu ..." Ja vajag šādu formu, tad aizvietojam šo rindu: return ($n{0} == 1 ? (substr($n, 1) == '00' ? 'simts' : 'simtu') : $digits[$n{0}] . ' ' . 'simti') . ' ' . _number2stringSmall(substr($n, 1)); ar šo: return ($n{0} == 1 ? (substr($n, 1) == '00' ? 'simts' : 'viens simts') : $digits[$n{0}] . ' ' . 'simti') . ' ' . _number2stringSmall(substr($n, 1)); Link to comment Share on other sites More sharing options...
Recommended Posts