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