3

如何知道字符串中的所有字母都是大写的?

4

5 回答 5

21

您可以使用strtoupper将字符串转换为大写。您现在知道它是大写的,您可以检查原始字符串是否匹配它。

IE。

$str === strtoupper($str)
于 2010-03-08T21:27:18.297 回答
10

您可以尝试制作字符串的副本,将副本转换为大写,并将其与原始字符串进行比较:

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失败的情况。

于 2010-03-08T21:31:49.050 回答
4
if(strcmp(strtoupper($str), $str) === 0) {
    echo 'is uppercase';
}

mb_strtoupper在涉及特殊字符编码的地方使用。

用于strcmp二进制安全的字符串比较。

于 2010-03-08T21:28:01.953 回答
4

如果所有字符都是字母,ctype_upper() 可能是一种可能性,并且它是一个 ascii 字符串。

于 2010-03-08T21:53:19.147 回答
0

如果它是一个长字符串并且您不想复制,那么遍历字符串并查看每个字符的 ascii 值。如果它小于 97,你就知道它都是大写的。

于 2010-03-09T00:52:21.877 回答