Это несколько упрощенная версия ответа dqhendricks. Я добавил в копии одну функцию, предполагающую, что вы вводите полную ссылку на ячейку Excel (например, «AB12»), а другую, предполагающую, что вы вводите только ссылку на столбец (то есть «AB»). Они оба возвращают нулевой индекс.
Ввод полной ссылки на ячейку
function getIndex ($cell) {
// Strip cell reference down to just letters
$let = preg_replace('/[^A-Z]/', '', $cell);
// Iterate through each letter, starting at the back to increment the value
for ($num = 0, $i = 0; $let != ''; $let = substr($let, 0, -1), $i++)
$num += (ord(substr($let, -1)) - 65) * pow(26, $i);
return $num;
}
Только ссылка на столбец ввода
function getIndex ($let) {
// Iterate through each letter, starting at the back to increment the value
for ($num = 0, $i = 0; $let != ''; $let = substr($let, 0, -1), $i++)
$num += (ord(substr($let, -1)) - 65) * pow(26, $i);
return $num;
}
Функция переходит от конца строки к началу, чтобы увеличить значение столбца. Он использует функцию ord()
для получения числового значения символа, а затем вычитает буквенное значение, чтобы получить локальное значение столбца. Наконец, он умножается на текущую мощность 26.