2011-05-11 5 views
24

strtoupper() PHP 함수에 대한 사용자 의견을 읽었으며 non-Enlgish 문자열에 대한 변환을 수행하는 방법에 대한 합의가없는 것 같습니다. 나는 사람들이 지역화 된 솔루션과 물건을 제공한다는 것을 의미하지만 문자열을 모두 위 (또는 모두 아래)의 대문자로 변환하는 통일 된 방법이있을 수 없습니까?strtoupper UTF-8 문자열 용 PHP 함수

내 질문에 말하자면 UTF-8로 인코딩 된 문자열 (일부 알 수없는 로케일에서)을 어떻게 PHP의 모든 위/아래 문자로 변환합니까?

답변

48

mb_strtoupper을 사용하고 싶습니다.

$str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός"; 
$str = mb_strtoupper($str, "UTF-8"); 
echo $str; // Prints ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ, ΔΡΑΣΚΕΛΊΖΕΙ ΥΠΈΡ ΝΩΘΡΟΎ ΚΥΝΌΣ 

PHP.net 상태 :

예컨대하여 strtolower 같은 표준 케이스 폴딩 기능 반대로

() 및 strtoupper(), 케이스 접는 유니 문자 속성에 기초하여 수행 인 . 따라서이 함수의 동작은 로케일 설정에 의해 영향을받는 이 아니며 A- 움라우트 (Ä)와 같이 '알파벳'속성을 갖는 문자를 으로 변환 할 수 있습니다.

0

this을 사용해 보셨습니까? 나는 언어 학자가 아니지만, 모든 언어가 대문자와 소문자를 구분한다고 가정하지는 않습니다.

+1

적어도. 예를 들어'ß'는 대문자가 없습니다. – KingCrunch

+0

모든 언어? 중국어 또는 아랍어는 어떨까요? 아랍어에는 각 문자에 대해 세 가지 버전이 있습니다. 모든 문자가 세 그룹 모두에 해당하는 버전이있는 것은 아닙니다. 그리스어에는 초기 (즉 대문자) 일반 문자와 최종 버전이있는 문자 하나가 있습니다. – rsk82

+0

@ rsk82 - * 그렇게하지 않을 것입니다. – arviman

1

사용 mb_strtoupper($text) 대신 strtoupper($text)의 : 모든 문자에 대한

+1

이 답변과 다른 점은 무엇입니까? http://stackoverflow.com/a/5969837/670017 – ahmd0