detectRowNumberFromCoordinate($coordinate); if ($rowNumber < $this->detectRowNumberFromCoordinate($startCell) || $rowNumber > $this->detectRowNumberFromCoordinate($endCell)) { return false; } // 列の範囲チェック $colNumber = $this->detectColNumberFromCoordinate($coordinate); if ($colNumber < $this->detectColNumberFromCoordinate($startCell) || $colNumber > $this->detectColNumberFromCoordinate($endCell)) { return false; } return true; } /** * セル番地から行番号を取り出す * * @param string $coordinate * @return int */ private function detectRowNumberFromCoordinate($coordinate) { return intval(preg_replace('/[A-Z]+/', '', $coordinate)); } /** * セル番地から列番号を取り出す * * @param string $coordinate * @return int */ private function detectColNumberFromCoordinate($coordinate) { $char = preg_replace('/\d+/', '', $coordinate); $charA = 65; if (strlen($char) == 1) { return ord($char) - $charA + 1; } $quot = ord($char[0]) - $charA + 1; $mod = ord($char[1]) - $charA + 1; return $quot * 26 + $mod; } }