【发布时间】:2010-03-08 21:25:03
【问题描述】:
如何知道字符串中的所有字母都是大写的?
【问题讨论】:
标签: php string conditional-statements uppercase
如何知道字符串中的所有字母都是大写的?
【问题讨论】:
标签: php string conditional-statements uppercase
【讨论】:
您可以尝试复制字符串,将副本转换为大写,然后将其与原始字符串进行比较:
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 失败的情况。
【讨论】:
if(strcmp(strtoupper($str), $str) === 0) {
echo 'is uppercase';
}
在涉及特殊字符编码的地方使用mb_strtoupper。
使用strcmp 进行二进制安全字符串比较。
【讨论】:
如果所有字符都是字母,ctype_upper() 可能是一种可能性,并且它是一个 ascii 字符串。
【讨论】:
如果它是一个长字符串并且您不想复制,那么遍历字符串并查看每个字符的 ascii 值。如果它小于 97,你就知道它都是大写的。
【讨论】: