Underscores in the string will result in false, so you have to remove them first.(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
ctype_upper — Проверяет символы в верхнем регистре
   Проверяет, состоит ли переданная строка (string)
   text только из букв в верхнем регистре.
  
textПроверяемая строка.
Замечание:
Функция интерпретирует целое число (int) как ASCII-значение одного символа, если передали целое число в диапазоне между -128 и 255 включительно; к отрицательным значениям добавляется 256, чтобы разрешить символы из диапазона кодировки Extended ASCII. Остальные целые числа обрабатываются как строки, которые содержат десятичные цифры целого числа.
   Возвращает true, если каждый символ в строке text —
   это прописная буква из установленного языкового стандарта (локали).
   При вызове с пустой строкой результатом всегда будет false.
  
Пример #1 Пример использования функция ctype_upper() (с выбором локали по умолчанию)
<?php
$strings = array('AKLWC139', 'LMNSDO', 'akwSKWsm');
foreach ($strings as $testcase) {
    if (ctype_upper($testcase)) {
        echo "Строка $testcase состоит только из букв в верхнем регистре.\n";
    } else {
        echo "Строка $testcase не состоит только из букв в верхнем регистре.\n";
    }
}
?>Результат выполнения приведённого примера:
Строка AKLWC139 не состоит только из букв в верхнем регистре. Строка LMNSDO состоит только из букв в верхнем регистре. Строка akwSKWsm не состоит только из букв в верхнем регистре.
Underscores in the string will result in false, so you have to remove them first.