Проверьте, является ли String ALL CAPS в PHP

Каков наилучший способ увидеть, содержит ли строка все заглавные буквы? Я все еще хочу, чтобы функция возвращала значение true, если строка также содержит символы или цифры.

Проверьте, является ли strtoupper($str) == $str

Для обработки не-ascii используйте:

mb_strtoupper($str, 'utf-8') == $str

ctype_upper (строка $ testString)

Если вы хотите, чтобы номера были включены (и по «символам» больше всего остального), то на самом деле вы пытаетесь протестировать отсутствие букв в нижнем регистре:

  $all_upper = !preg_match("/[az]/", $string) 

Вы можете использовать preg_match() . Регулярное выражение будет /^[^az]+$/ .

 return preg_match('/^[^az]+$/', $string) === 1 ? true : false; 

Вот документация для preg_match ().

http://php.net/manual/en/function.preg-match.php

Решение PCRE:

 $all_uppercase = preg_match('#^[AZ]+$#', $string); 

просто убедитесь, что вы не используете модификатор 'i'

 if(mb_strtoupper($string)===$string) { do the required task } else { some other task } 

Я думаю, что вы ищете эту функцию

 $myString = "ABCDE"; if (ctype_upper($myString)) // returns true if is fully uppercase { echo "the string $myString is fully uppercase"; } 

Надеюсь, поможет

В дополнение к комментарию Александра Морланда по поводу ответа Уинстона Эверта, если вам нужно иметь дело с акцентированными символами utf-8, вы можете использовать следующий набор функций:

 define('CHARSET', 'utf-8'); function custom_substr($content='',$pos_start=0,$num_char=1){ $substr=''; if(function_exists('mb_substr')){ $substr=mb_substr($content,$pos_start,$num_char,CHARSET); } else{ $substr=substr($content,$pos_start,$num_char); } return $substr; } function custom_str_case($string='', $case='lower'){ $lower = array( "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ñ", "ò", "ó", "ô", "õ", "ö", "ø", "ù", "ú", "û", "ü", "ý", "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я" ); $upper = array( "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ъ", "Ь", "Э", "Ю", "Я" ); if($case=='lower'){ $string = str_replace($upper, $lower, $string); } else{ $string = str_replace($lower, $upper, $string); } return $string; } function custom_strtolower($string){ return custom_str_case($string,'lower'); } function custom_strtoupper($string){ return custom_str_case($string,'upper'); } function custom_ucfirst($string){ $string=custom_strtolower($string); $first_char=custom_substr($string,0,1); $rest_char=custom_substr($string,1,custom_strlen($string)); $first_char=custom_strtoupper($first_char); return $first_char.$rest_char; } function is_uppercase($string=''){ $is_uppercase=false; if($string === custom_strtoupper($string)) { $is_uppercase=true; } return $is_uppercase; } function is_ucfirst($string=''){ $first_char=custom_substr($string,0,1); $is_ucfirst=is_uppercase($first_char); return $is_ucfirst; } 

Ресурсы :: https://github.com/rafasashi/PHP-Custom-String-Functions

Вот как я обрабатываю текст ALL CAPS для моего раздела комментариев.

 if ($str == strtoupper($str)) { $str = ucfirst(strtolower($str)); }