3v4l.org

run code in 300+ PHP versions simultaneously
<?php function letterToColumnNumber(string $letters, int $indexStart = 0): int { static $ordA = ord('A'); $length = strlen($letters); $number = 0; $pow = 1; for ($i = $length - 1; $i >= 0; $i--) { // calculate the value of each letter and add to the total $number += (ord($letters[$i]) - $ordA + 1) * $pow; $pow *= 26; } return $number - (1 - $indexStart); } function rangeStringToRangeArray(string $range, int $indexStart = 0): array { // Parse Excel range expression if (sscanf($range, '%[A-Z]%d:%[A-Z]%d', $startCol, $startRow, $endCol, $endRow) != 4) { throw new Exception('Invalid range expression'); } return [ [ letterToColumnNumber($startCol, $indexStart), $startRow - (1 - $indexStart) ], [ letterToColumnNumber($endCol, $indexStart), $endRow - (1 - $indexStart) ] ]; } echo json_encode(rangeStringToRangeArray('A1:B2')); // returns [[0,0],[1,1]] echo json_encode(rangeStringToRangeArray('A1:B2', 1)); // returns [[1,1],[2,2]]
Output for 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
[[0,0],[1,1]][[1,1],[2,2]]
Output for 8.1.0 - 8.1.34, 8.2.0 - 8.2.30
Fatal error: Constant expression contains invalid operations in /in/679Dp on line 5
Process exited with code 255.

preferences:
76.06 ms | 931 KiB | 4 Q