That's a different algorithm for testing than the one I (or mIRC) provided. ctype_upper is checking that all alpha characters are upper-case, not that the bytes are equal to an uppercased version of the string.
Either way, you end up with either a double-positive or a double-negative.. they are both equally meaningful and equally meaningless, since you're saying nothing about the string "5" (it's neither uppercase nor lowercase-- it's both uppercase and lowercase).