Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:如何知道字符串中的所有字母都是大写的?_Php_String_Conditional Statements_Uppercase - Fatal编程技术网

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

PHP:如何知道字符串中的所有字母都是大写的?,php,string,conditional-statements,uppercase,Php,String,Conditional Statements,Uppercase,如何知道字符串中的所有字母都是大写?您可以使用将字符串转换为大写。现在您知道它是大写的,您可以检查原始字符串是否与它匹配 即 在涉及特殊字符编码时使用 用于二进制安全字符串比较。您可以尝试复制字符串,将副本转换为大写,然后将其与原始字符串进行比较: public function isUpperCase ($string) { return $string === strtoupper($str); } 或者,更好的版本(多字节安全*)是: public function mb_isUp

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

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

在涉及特殊字符编码时使用


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

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

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;
}

*请注意,可能会失败,并返回false。在生产环境中,您应该提供可能的编码列表,或者处理失败的情况。

ctype_upper()如果所有字符都是字母,它是一个ascii字符串。

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

我对多字节版本的唯一问题是编码检测,这是一件众所周知的困难的事情,如果它弄错了,它会弄坏你的字符串+但这是唯一真正的方法。同意。对该案件添加了一点评论
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;
}