- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDecToAlpha.php
More file actions
48 lines (37 loc) · 910 Bytes
/
DecToAlpha.php
File metadata and controls
48 lines (37 loc) · 910 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
namespace Mpdf\Conversion;
class DecToAlpha
{
public function convert($valor, $toUpper = true)
{
// returns a string from A-Z to AA-ZZ to AAA-ZZZ
// OBS: A = 65 ASCII TABLE VALUE
if (($valor < 1) || ($valor > 18278)) {
return '?'; //supports 'only' up to 18278
}
$c2 = $c3 = '';
$c1 = 64 + $valor; // 1 letter (up to 26)
if ($valor > 702) { // 3 letters (up to 18278)
$c1 = 65 + floor(($valor - 703) / 676);
$c2 = 65 + floor((($valor - 703) % 676) / 26);
$c3 = 65 + floor((($valor - 703) % 676) % 26);
} elseif ($valor > 26) { // 2 letters (up to 702)
$c1 = (64 + (int) (($valor - 1) / 26));
$c2 = (64 + ($valor % 26));
if ($c2 === 64) {
$c2 += 26;
}
}
$alpha = chr($c1);
if ($c2 !== '') {
$alpha .= chr($c2);
}
if ($c3 !== '') {
$alpha .= chr($c3);
}
if (!$toUpper) {
$alpha = strtolower($alpha);
}
return $alpha;
}
}