찾다
백엔드 개발PHP 튜토리얼PHP 멀티바이트 문자열

PHP 멀티바이트 문자열

Nov 21, 2016 pm 05:58 PM
phpPHP 문자열

소개

많은 언어가 필요한 각 문자를 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(&#39;SJIS&#39;);
    // 开始缓冲并指定 "mb_output_handler" 为回调函数
    ob_start(&#39;mb_output_handler&#39;);
?>

멀티바이트 문자열 함수

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 — 문자열 부분 가져오기


성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?PHP 세션이 실패 할 수있는 몇 가지 일반적인 문제는 무엇입니까?Apr 25, 2025 am 12:16 AM

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP의 세션 관련 문제를 어떻게 디버그합니까?PHP의 세션 관련 문제를 어떻게 디버그합니까?Apr 25, 2025 am 12:12 AM

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

session_start ()가 여러 번 호출되면 어떻게됩니까?session_start ()가 여러 번 호출되면 어떻게됩니까?Apr 25, 2025 am 12:06 AM

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

PHP에서 세션 수명을 어떻게 구성합니까?PHP에서 세션 수명을 어떻게 구성합니까?Apr 25, 2025 am 12:05 AM

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

세션을 저장하기 위해 데이터베이스를 사용하면 어떤 장점이 있습니까?세션을 저장하기 위해 데이터베이스를 사용하면 어떤 장점이 있습니까?Apr 24, 2025 am 12:16 AM

데이터베이스 스토리지 세션 사용의 주요 장점에는 지속성, 확장 성 및 보안이 포함됩니다. 1. 지속성 : 서버가 다시 시작 되더라도 세션 데이터는 변경되지 않아도됩니다. 2. 확장 성 : 분산 시스템에 적용하여 세션 데이터가 여러 서버간에 동기화되도록합니다. 3. 보안 : 데이터베이스는 민감한 정보를 보호하기 위해 암호화 된 스토리지를 제공합니다.

PHP에서 사용자 정의 세션 처리를 어떻게 구현합니까?PHP에서 사용자 정의 세션 처리를 어떻게 구현합니까?Apr 24, 2025 am 12:16 AM

SessionHandlerInterface 인터페이스를 구현하여 PHP에서 사용자 정의 세션 처리 구현을 수행 할 수 있습니다. 특정 단계에는 다음이 포함됩니다. 1) CustomsessionHandler와 같은 SessionHandlerInterface를 구현하는 클래스 만들기; 2) 인터페이스의 방법 (예 : Open, Close, Read, Write, Despare, GC)의 수명주기 및 세션 데이터의 저장 방법을 정의하기 위해 방법을 다시 작성합니다. 3) PHP 스크립트에 사용자 정의 세션 프로세서를 등록하고 세션을 시작하십시오. 이를 통해 MySQL 및 Redis와 같은 미디어에 데이터를 저장하여 성능, 보안 및 확장 성을 향상시킬 수 있습니다.

세션 ID 란 무엇입니까?세션 ID 란 무엇입니까?Apr 24, 2025 am 12:13 AM

SessionId는 웹 애플리케이션에 사용되는 메커니즘으로 사용자 세션 상태를 추적합니다. 1. 사용자와 서버 간의 여러 상호 작용 중에 사용자의 신원 정보를 유지하는 데 사용되는 무작위로 생성 된 문자열입니다. 2. 서버는 쿠키 또는 URL 매개 변수를 통해 클라이언트로 생성하여 보낸다. 3. 생성은 일반적으로 임의의 알고리즘을 사용하여 독창성과 예측 불가능 성을 보장합니다. 4. 실제 개발에서 Redis와 같은 메모리 내 데이터베이스를 사용하여 세션 데이터를 저장하여 성능 및 보안을 향상시킬 수 있습니다.

무국적 환경 (예 : API)에서 세션을 어떻게 처리합니까?무국적 환경 (예 : API)에서 세션을 어떻게 처리합니까?Apr 24, 2025 am 12:12 AM

JWT 또는 쿠키를 사용하여 API와 같은 무국적 환경에서 세션을 관리 할 수 ​​있습니다. 1. JWT는 무국적자 및 확장 성에 적합하지만 빅 데이터와 관련하여 크기가 크다. 2. 쿠키는보다 전통적이고 구현하기 쉽지만 보안을 보장하기 위해주의해서 구성해야합니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음