2010-03-08 3 views

답변

21

strtoupper을 사용하여 문자열을 대문자로 변환 할 수 있습니다. 이제 대문자임을 알 수 있으며 원래 문자열이 일치하는지 확인할 수 있습니다.

즉.

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

특수 문자 인코딩이 관련되어 사용 mb_strtoupper.

이진 안전 문자열 비교에 strcmp을 사용하십시오.

11

당신은 문자열의 복사본을 만드는 시도 대문자로 복사본을 변환하고, 원래의 문자열로 비교할 수 :

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

OR, (멀티 바이트 안전 *입니다) 더 나은 버전 것 be :

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이 실패하는 경우를 처리해야합니다.

+0

멀티 바이트 버전과 관련된 유일한 문제는 인코딩 탐지입니다. 이는 악명 높게 어려운 일이며, 잘못 입력 한 경우 문자열을 조작합니다. +1 할 수있는 유일한 방법입니다. –

+0

동의 함. 그 케이스에 대한 약간의 덧글 추가 – PatrikAkerstrand

3

모든 문자가 문자이고 ascii 문자열 인 경우 ctype_upper()가 가능할 수 있습니다.

0

긴 문자열이고 복사본을 만들고 싶지 않은 경우 문자열을 걸어 각 문자의 ASCII 값을 확인하십시오. 97보다 작은 경우 모두 대문자임을 알 수 있습니다.

관련 문제