开发者

PHP: how to know that all letters in a string are upper case?

How to know that all letters in a string are upper 开发者_如何学编程case?


You can use strtoupper to convert your string to uppercase. You now know that it is uppercase, and you can check if the original string matches it.

ie.

$str === strtoupper($str)


You could try making a copy of the string, convert the copy to upper case, and compare it to the original string:

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

OR, a better version (which is multibyte-safe*) would be:

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

*Note that mb_detect_encoding can fail, and return false. In a production environment you should either provide a list of possible encodings to mb_detect_encoding, or handle the case where mb_detect_encoding fails.


if(strcmp(strtoupper($str), $str) === 0) {
    echo 'is uppercase';
}

Use mb_strtoupper where special character encodings are involved.

Use strcmp for binary-safe string comparison.


ctype_upper() might be a possibility if all the characters are letters, and it's an ascii string.


If its a long string and you don't want to make a copy then walk the string and look at each character's ascii value. If it is less than 97 you know it is all uppercase.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜