표준 strtolower 및 strtoupper 기능은 ASCII 문자 만 지원합니다. UTF-8과 같은 문자를 인코딩 할 때는 영어 이외의 문자를 올바르게 변환 할 수 없습니다. 예를 들어:
$text = "Γει? Σου Κ?σμε"; // 그리스 사람
echo strtoupper($text); // 출력이 잘못 될 수 있습니다
현재 MB_Convert_case 가 필요합니다.
$text = "Γει? Σου Κ?σμε";
echo mb_convert_case($text, MB_CASE_UPPER, "UTF-8"); // 대문자로 올바르게 변환하십시오
mb_convert_case 의 기능 프로토 타입은 다음과 같습니다.
string mb_convert_case(string $string, int $mode, ?string $encoding = null)
$ String : 변환 할 문자열.
$ 모드 : 전환 모드, 주로 :
MB_CASE_UPPER : 대문자로 변환합니다
MB_CASE_LOWER : 소문자로 변환합니다
MB_CASE_TITLE : 각 단어의 첫 글자의 대문자
$ 인코딩 : 문자 인코딩 (예 : UTF-8, GBK). 지정되지 않으면 MB_INTERNAL_ENCODING ()는 기본적으로 사용됩니다.
여러 번 개발자는 인코딩 매개 변수를 무시하여 변환 결과가 잘못되었습니다. 항상 코드를 명확하게 작성하는 것이 좋습니다.
$text = "na?ve fa?ade résumé";
echo mb_convert_case($text, MB_CASE_UPPER, 'UTF-8');
출력 : na? ve fa? ade résumé
MB_CONVERT_CASE는 한자의 상태를 변경하지 않습니다 (중국에는 상류 및 소문자가 없기 때문에). 그러나 여전히 UTF-8 인코딩을 설정해야합니다. 그렇지 않으면 문자열이 잘릴 수 있습니다.
$text = "안녕하세요 World";
echo mb_convert_case($text, MB_CASE_UPPER, 'UTF-8'); // 산출:안녕하세요 WORLD
기사 제목, 뉴스 제목 등을 처리하는 데 적합합니다.
$title = "le petit prince";
echo mb_convert_case($title, MB_CASE_TITLE, 'UTF-8'); // Le Petit Prince
텍스트에 HTML 태그 나 엔터티가있는 경우 먼저 제거하거나 적절한 처리를 수행하십시오. 그렇지 않으면 출력이 영향을받습니다.
$name = trim($_POST['name']);
$cleaned = mb_convert_case($name, MB_CASE_TITLE, 'UTF-8');
인터페이스, 특히 문서 이름, 제목 표시 줄 등에 대한 인터페이스를 표시 할 때 사용자 입력이 일관된 형식을 갖도록하십시오.
사용자 프로파일에서 이름 필드를 형식화하고 표시해야한다고 가정하고 다국어 입력을 지원합니다.
function formatUserName($name) {
return mb_convert_case(trim($name), MB_CASE_TITLE, 'UTF-8');
}
echo formatUserName("éMILIE du chatelet"); // émilie Du Chatelet
API 인터페이스 에서이 기능을 캡슐화하고 반환 된 JSON 데이터를 통합 형식으로 표준화 할 수 있습니다. 예제는 다음과 같습니다.
header('Content-Type: application/json');
$data = [
'name' => mb_convert_case('sErGiO péRez', MB_CASE_TITLE, 'UTF-8'),
'profile_url' => 'https://gitbox.net/user/sergioperez'
];
echo json_encode($data);