toAlpha($num, range('a', 'z')); case 'upper-alpha': case 'upper-latin': return $style->toAlpha($num, range('A', 'Z')); case 'lower-greek': $range = ['α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω']; return $style->toAlpha($num, $range); case 'upper-greek': $range = ['Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω']; return $style->toAlpha($num, $range); case 'lower-roman': return strtolower($style->numerals($num)); case 'upper-roman': return $style->numerals($num); case 'hebrew': return $style->numerals($num, ['א׳א׳‎' => 1000000 ,'א׳ק‎' => 100000 ,'א׳י‎' => 10000 ,'ה׳‎' => 5000 ,'ב׳‎' => 2000 ,'א׳‎' => 1000 ,'ץ‎' => 900 ,'ף‎' => 800 ,'ן‎' => 700 ,'ם‎' => 600 ,'ך‎' => 500 ,'ת‎' => 400 ,'ש‎' => 300 ,'ר‎' => 200 ,'ק‎' => 100 ,'צ‎' => 90 ,'פ‎' => 80 ,'ע‎' => 70 ,'ס‎' => 60 ,'נ‎' => 50 ,'מ‎' => 40 ,'ל‎' => 30 ,'כ‎' => 20 ,'יט‎' => 19 ,'יח‎' => 18 ,'יז‎' => 17 ,'ט״ז‎' => 16 ,'ט״ו‎' => 15 ,'יד‎' => 14 ,'יג‎' => 13 ,'יב‎' => 12 ,'יא‎' => 11 ,'י‎' => 10 ,'ט‎' => 9 ,'ח‎' => 8 ,'ז‎' => 7,'ו‎' => 6 ,'ה‎' => 5 ,'ד‎' => 4 ,'ג‎' => 3 ,'ב‎' => 2 ,'א‎' => 1]); case 'georgian': return $style->numerals($num, ['ჵ' => 10000, 'ჰ' => 9000, 'ჯ' => 8000, 'ჴ' => 7000, 'ხ' => 6000, 'ჭ' => 5000, 'წ' => 4000, 'ძ' => 3000, 'ც' => 2000, 'ჩ' => 1000, 'შ' => 900, 'ყ' => 800, 'ღ' => 700, 'ქ' => 600, 'ფ' => 500, 'ჳ' => 400, 'ტ' => 300, 'ს' => 200, 'რ' => 100, 'ჟ' => 90, 'პ' => 80, 'ო' => 70, 'ჲ' => 60, 'ნ' => 50, 'მ' => 40, 'ლ' => 30, 'კ' => 20, 'ი' => 10, 'თ' => 9, 'ჱ' => 8, 'ზ' => 7, 'ვ' => 6, 'ე' => 5, 'დ' => 4, 'გ' => 3, 'ბ' => 2, 'ა' => 1]); case 'footnote': return $style->toAlpha($num, ['*','†','‡','§','ƒ']); case 'disc': return '●'; case 'circle': return '○'; case 'square': return '■'; case 'none': return ''; default: return $num; } } /** * Class StyleType * * functions for converting numbers to different formats defined by css List-Style-Type * * */ class StyleType { /** * Takes a positive integer and returns the equivalent alpha value. * * eg. The below returns a lower case alphabetic value for 90. * toAlpha(90,range('a','z') * * eg. The below returns a lower case greek letters for 128. * toAlpha(128,array('α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω')); * * @param $number int The number to be turned into characters * * @param $alphabet array set of letters * * @return string alpha representation of $number */ public function toAlpha($number, $alphabet) { $count = count($alphabet); if ($number <= $count) { return $alphabet[$number - 1]; } $alpha = ''; while ($number > 0) { $modulo = ($number - 1) % $count; $alpha = $alphabet[$modulo] . $alpha; $number = floor((($number - $modulo) / $count)); } return $alpha; } /** * * Turns a positive integer into a uppercase roman numeral. * @param $number int The value to be converted into a roman numeral * @param $table array An array of roman numerals, (zero normally specified) * * @return string|int Roman numeral of $number */ public function numerals($number, $table = ['M' => 1000, 'CM' => 900, 'D' => 500, 'CD' => 400, 'C' => 100, 'XC' => 90, 'L' => 50, 'XL' => 40, 'X' => 10, 'IX' => 9, 'V' => 5, 'IV' => 4, 'I' => 1]) { $return = ''; while ($number > 0) { foreach ($table as $rom => $value) { if ($number >= $value) { $number -= $value; $return .= $rom; break; } } } return $return; } }