PHP 다국어 개발에서 문자열의 사례 변환은 일반적인 요구 사항 중 하나입니다. 표준 strtoupper 함수는 간단하고 사용하기 쉽지만 UTF-8과 같은 다중 바이트 인코딩을 지원하지 않으므로 영어 이외의 문자를 처리 할 때 변환 또는 변환 오류가 발생합니다. 이 문제를 해결하기 위해 PHP는 MB_STRTOUPPER 기능을 제공합니다.이 기능은 다중 바이트 문자열을 올바르게 처리하고 다중 언어 환경에서 케이스 변환을 구현할 수 있습니다.
그러나 주요 세부 사항에주의를 기울이지 않으면 MB_STRTOUPPER 조차도 캐피탈을 올바르게 변환하지 못할 수 있습니다. 이 기사는 MB_STRTOUPPER가 다국어 환경에서 자본화를 정확하게 변환하는 방법을 소개합니다.
MB_STRTOUPPER 에는 문자열의 인코딩 형식을 지정하는 두 번째 매개 변수 $ 인코딩이 있습니다. 지정되지 않으면 MB_INTERNAL_ENCODING () 에 의해 반환 된 인코딩은 일반적으로 UTF-8이지만 반드시 그런 것은 아닙니다.
정확한 변환을 보장하기 위해 인코딩을 명확하게 지정하는 것이 좋습니다. 특히 UTF-8과 같은 다국적 환경에서 가장 일반적으로 사용되는 인코딩을 명확하게 지정하는 것이 좋습니다.
<?php
$text = "stra?e"; // 독일 사람“거리”,특수 문자가 포함되어 있습니다 ?
$uppercase = mb_strtoupper($text, 'UTF-8');
echo $uppercase; // STRASSE
?>
이 예에서 MB_STRTOUPPER가 변환됩니까 ? strtoupper가 할 수없는 SS 에 올바르게.
코드에서 멀티 바이트 문자열 작업을 광범위하게 사용하는 경우 인코딩을 지정하는 것을 잊어 버려서 전 세계적으로 내부 인코딩을 설정하는 것이 좋습니다.
<?php
mb_internal_encoding('UTF-8');
$text = "привет"; // 러시아인“안녕하세요”
echo mb_strtoupper($text); // ПРИВЕТ
?>
이렇게하면 인코딩이 각 호출에 지정되지 않은 경우에도 UTF-8이 기본적으로 사용됩니다.
MB_STRTOUPPER는 대부분의 멀티 바이트 문자를 처리 할 수 있지만 일부 언어에는 터키어 점선 및 점이없는 특별 사례 변환 규칙이 있습니다.
이 경우 MB_Convert_case 및 로케일을 결합하여 다음을 최적화 할 수 있습니다.
<?php
setlocale(LC_CTYPE, 'tr_TR.UTF-8'); // 터키 지역을 설립하십시오
$text = "istanbul";
$uppercase = mb_convert_case($text, MB_CASE_UPPER, 'UTF-8');
echo $uppercase; // ?STANBUL (뭔가 ?)
?>
MB_STRTOUPPER 자체는 로케일 규칙을 고려하지 않으며 MB_CONVERT_CASE는 일부 PHP 버전과 환경에서 더 친숙합니다.
PHP는 또한 MB_CONVERT_CASE (제목 사례 포함)를 지원하는 MB_CONVERT_CASE를 제공하며 때로는 MB_STRTOUPPER 대신 사용할 수 있습니다.
<?php
$text = "héllo wórld";
echo mb_convert_case($text, MB_CASE_UPPER, 'UTF-8'); // HELLO WóRLD
?>
항상 인코딩을 지정하면 UTF-8이 권장됩니다.
누락을 피하기 위해 전 세계적으로 내부 인코딩을 설정하십시오 .
특수 언어에 적절한 로케일 설정을 사용하십시오 .
필요에 따라 MB_STRTOUPPER 또는 MB_CONVERT_CASE를 선택하십시오 .
이러한 방식으로 문자열 케이스 변환의 정확도는 다중 언어 환경에서 보장 될 수 있습니다.