소개
많은 언어가 필요한 각 문자를 8비트 값으로 일대일 매핑하는 반면, 서면 의사소통을 위해 너무 많은 문자가 필요한 언어도 있습니다. 인코딩 범위는 1바이트에만 포함될 수 없습니다. (1바이트 바이트는 8비트로 구성됩니다. 각 비트는 1 또는 0의 두 가지 값만 포함할 수 있습니다. 따라서 1바이트는 256개의 서로 다른 값만 나타낼 수 있습니다. 값, 즉 2 8승). 멀티바이트 문자 인코딩 방식은 기존 바이트 기반 인코딩 시스템에서 256개 이상의 문자를 표현하기 위해 개발되었습니다.
멀티바이트로 인코딩된 문자열을 연산(트림, 분할, 스플라이스 등)할 때 이 인코딩 방식으로 인해 두 개 이상의 연속 바이트는 하나의 문자만 표현할 수 있으므로 특수 기능을 사용해야 합니다. 그렇지 않으면 이 문자열에 멀티바이트 문자열을 감지할 수 없는 함수를 적용할 때 멀티바이트 문자의 시작 위치를 감지하지 못하고 왜곡된 문자열로 끝나서 기본적으로 원래 의미를 잃을 수 있습니다.
mbstring은 PHP에서 멀티바이트 인코딩을 처리하는 데 도움이 되는 멀티바이트 문자열용 함수를 제공합니다. 또한 mbstring은 가능한 문자 인코딩 간에 변환할 수 있습니다. 편의를 위해 mbstring은 UTF-8, UCS-2 및 많은 단일 바이트 인코딩과 같은 유니코드 기반 인코딩을 처리하도록 설계되었습니다.
mbstring은 기본 확장자가 아닙니다. 즉, 기본적으로 활성화되어 있지 않습니다. 구성 옵션에서 이 모듈을 명시적으로 활성화해야 합니다.
HTTP 입력 및 출력
HTTP 입력/출력 문자 인코딩 변환은 바이너리 데이터에도 작동합니다. HTTP 입/출력에 바이너리 데이터가 사용되는 경우 사용자는 문자 인코딩 변환을 제어해야 합니다.
PHP 4.3.3부터 HTML 폼의 enctype 속성이 multipart/form-data로 설정되어 있고 php.ini의 mbstring.encoding_translation이 On으로 설정되어 있으면 POST 변수와 업로드된 파일도 내부 문자 인코딩으로 변환됩니다. 그러나 쿼리 키에는 변환이 적용되지 않습니다.
HTTP 입력 PHP 스크립트에서는 HTTP 입력 문자의 변환을 제어할 수 있는 방법이 없습니다. HTTP 입력 문자 변환을 비활성화하려면 php.ini에서 설정해야 합니다.
예제 #1 php.ini에서 HTTP 입력 변환 비활성화
;; 禁用 HTTP 输入转换 mbstring.http_input = pass ;;禁用 HTTP 输入转换 (PHP 4.3.0 或更高版本) mbstring.encoding_translation = Off
PHP가 Apache 모듈로 실행되는 경우. 이러한 설정은 각 디렉토리의 httpd.conf 또는 .htaccess에 있는 각 가상 호스트(가상 호스트) 지시문을 통해 재정의될 수도 있습니다.
HTTP 출력 문자 인코딩 변환을 사용하는 방법에는 여러 가지가 있습니다. 하나는 php.ini를 사용하는 것이고, 다른 하나는 ob_start의 콜백 함수로 mb_output_handler()를 사용하여 ob_start()를 사용하는 것입니다.
예시 #2 php.ini 설정 예
;; 为所有 PHP 页面启用输出字符编码的转换 ;; 启用输出缓冲 output_buffering = On ;; 设置 mb_output_handler 来进行输出的转换 output_handler = mb_output_handler
예시 #3 스크립트 예
<?php // 仅为此页面启用输出字符编码的转换 // 设置 HTTP 输出字符编码为 SJIS mb_http_output('SJIS'); // 开始缓冲并指定 "mb_output_handler" 为回调函数 ob_start('mb_output_handler'); ?>
멀티바이트 문자열 함수
mb_check_encoding — 지정된 인코딩에서 문자열이 유효한지 확인
mb_convert_case — 문자열을 대문자와 소문자로 변환
mb_convert_encoding — 문자 인코딩 변환
mb_convert_kana — "가나"로 변환 from another ("zen-kaku", "han-kaku" 등)
mb_convert_variables — 하나 이상의 변수의 문자 인코딩을 변환합니다.
mb_decode_mimeheader — MIME 헤더 필드의 문자 디코딩 String
mb_decode_numericentity — HTML 숫자 문자열을 문자로 디코딩
mb_Detect_encoding — 문자 인코딩 감지
mb_Detect_order — 문자 인코딩 감지 순서 설정/가져오기
mb_encode_mimeheader — 멀티바이트 문자열에 대한 문자를 HTML 숫자 문자열 참조로 인코딩
mb_ereg_replace_callback — 정규식 검색을 수행하고 콜백을 사용하여 멀티바이트 지원으로 바꿉니다
mb_ereg_replace — 멀티바이트 지원으로 정규식 교체
mb_ereg_search_getpos — 다음 정규식 일치의 시작점 반환
mb_ereg_search_getregs — 마지막 멀티바이트 정규식 일치에서 결과 검색
mb_ereg_search_init — 멀티바이트 정규식 일치를 위한 문자열 및 정규식 설정
mb_ereg_search_pos — 미리 정의된 멀티바이트 문자열에 대해 멀티바이트 정규 표현식에서 일치하는 부분의 위치와 길이를 반환합니다
mb_ereg_search_regs — 멀티바이트 정규식에서 일치하는 부분을 반환합니다
mb_ereg_search_setpos — 다음 정규식 일치의 시작점 설정
mb_ereg_search — 미리 정의된 멀티바이트 문자열에 대한 멀티바이트 정규식 일치
mb_ereg — 멀티바이트를 지원하는 정규식 일치
mb_eregi_replace — 대소문자를 무시하고 멀티바이트 지원으로 정규식 교체
mb_eregi — 멀티바이트를 지원하는 대소문자를 무시하는 정규식 일치
mb_get_info — mbstring의 내부 설정 가져오기
mb_http_input — HTTP 입력 문자 인코딩 감지
mb_http_output — HTTP 출력 문자 인코딩 설정/가져오기
mb_internal_encoding — 내부 문자 인코딩 설정/가져오기
mb_언어 — 현재 언어 설정/가져오기
mb_list_encodings — 지원되는 모든 인코딩의 배열 반환
mb_output_handler — 출력 버퍼에서 문자 인코딩을 변환하는 콜백 함수
mb_parse_str — GET/POST/COOKIE 데이터 구문 분석 및 전역 변수 설정
mb_preferred_mime_name — MIME 문자열 가져오기
mb_regex_encoding — 멀티바이트 정규식에 대한 문자 인코딩 설정/가져오기
mb_regex_set_options — 설정 / mbregex 함수에 대한 기본 옵션 가져오기
mb_send_mail — 인코딩된 이메일 보내기
mb_split — 정규 표현식을 사용하여 멀티바이트 문자열 분할
mb_strcut — 이메일의 일부 가져오기 문자
mb_strimwidth — 지정된 너비만큼 잘린 문자열을 가져옵니다.
mb_stripos — 대소문자를 구분하지 않고 다른 문자열에서 처음 나타나는 문자열을 찾습니다.
mb_stristr — 대소문자 -insensitively는 다른 문자열에서 처음으로 나타나는 문자열을 찾습니다.
mb_strlen — 문자열의 길이를 가져옵니다.
mb_strpos — 다른 문자열에서 처음으로 나타나는 문자열을 찾습니다. 위치
mb_strrchr — 다른 문자열에서 지정된 문자의 마지막 발생을 찾습니다.
mb_strrichr — 대소문자를 구분하지 않고 다른 문자열에서 지정된 문자의 마지막 발생을 찾습니다.
mb_strripos — 다음의 마지막 발생을 찾습니다. 문자열의 문자열, 대소문자 구분
mb_strrpos — 문자열에서 마지막으로 나타나는 문자열 찾기
mb_strstr — 다른 문자열에서 처음으로 나타나는 문자열 찾기
mb_strtolower — 문자열을 소문자로 만듭니다
mb_strtoupper — 문자열을 대문자로 만듭니다
mb_strwidth — 문자열의 너비를 반환합니다
mb_substitute_character — 대체 문자 설정/가져오기
mb_substr_count — 문자열 발생 횟수 계산
mb_substr — 문자열 부분 가져오기