Ну, это зависит от того, что именно вы хотите сделать с «крайними случаями». Какой результат вы ожидаете, когда персонаж z
или Z
? Вам нужна следующая буква того же регистра или просто следующая буква, точка?
Не зная ответа на этот вопрос, в самом простом случае вы можете просто сделать это:
$next_character = chr(ord($current_character) + 1);
Но когда вы находитесь на Z
, это даст вам [
, а z
даст вам {
, в соответствии со значениями ASCII.
Отредактировано согласно комментарию:
Если вам нужен следующий символ в том же регистре, вы можете просто добавить простые проверки после строки выше:
if ($next_character == '[')
$next_character = 'A';
else if ($next_character == '{')
$next_character = 'a';
Это очень простые операции, я бы не стал беспокоиться об эффективности в таком случае.