PHP: как узнать, что все буквы в строке прописные? - PullRequest
3 голосов
/ 09 марта 2010

Как узнать, что все буквы в строке прописные?

Ответы [ 5 ]

21 голосов
/ 09 марта 2010

Вы можете использовать strtoupper для преобразования вашей строки в верхний регистр. Теперь вы знаете, что это прописные буквы, и вы можете проверить, соответствует ли исходная строка.

т.

$str === strtoupper($str)
10 голосов
/ 09 марта 2010

Вы можете попробовать сделать копию строки, преобразовать копию в верхний регистр и сравнить ее с исходной строкой:

public function isUpperCase ($string) {
   return $string === strtoupper($str);
}

ИЛИ, лучшей версией (которая является многобайтовой *) будет:

public function mb_isUpperCase ($string) {
   $upper = mb_convert_case( 
      $string, 
      MB_CASE_UPPER, 
      mb_detect_encoding( 
         $string
      )
   );
   return $string === $upper;
}

* Обратите внимание, что mb_detect_encoding может завершиться ошибкой и вернуть false. В производственной среде вы должны либо предоставить список возможных кодировок для mb_detect_encoding , либо обработать случай, когда mb_detect_encoding завершится неудачей.

4 голосов
/ 09 марта 2010

ctype_upper () может быть возможным, если все символы являются буквами, и это строка ascii.

4 голосов
/ 09 марта 2010
if(strcmp(strtoupper($str), $str) === 0) {
    echo 'is uppercase';
}

Используйте mb_strtoupper, если используются специальные кодировки символов.

Используйте strcmp для сравнения строк в двоичном коде.

0 голосов
/ 09 марта 2010

Если это длинная строка, и вы не хотите делать копию, то просмотрите строку и посмотрите значение ascii каждого символа.Если он меньше 97, вы знаете, что все прописные.

...