【问题标题】:PHP: how to know that all letters in a string are upper case?PHP:如何知道字符串中的所有字母都是大写的?
【发布时间】:2010-03-08 21:25:03
【问题描述】:

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

【问题讨论】:

    标签: php string conditional-statements uppercase


    【解决方案1】:

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

    即。

    $str === strtoupper($str)
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我对多字节版本的唯一问题是编码检测,这是出了名的难做的事情,如果它弄错了会破坏你的字符串。 +1 是唯一真正的方法。
      • 同意。为该案例添加了一点评论
      【解决方案3】:
      if(strcmp(strtoupper($str), $str) === 0) {
          echo 'is uppercase';
      }
      

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

      使用strcmp 进行二进制安全字符串比较。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-10-09
            • 1970-01-01
            • 2015-05-11
            • 2014-01-01
            • 1970-01-01
            • 2021-11-12
            • 2018-04-03
            • 1970-01-01
            相关资源
            最近更新 更多